IOC操作Bean管理(FactoryBean)
1.Spring有两种bean,一种普通bean,另一种工厂bean(FactoryBean)
2.普通bean:在配置文件中定义bean类型就是返回类型
3.工厂bean:在配置文件中定义bean类型可以和返回类型不一样
第一步 创建类,让这个类作为工厂bean,实现接口FactoryBean
第二步 实现接口里面的方法,在实现的方法中定义返回的bean类型
public class MyBean implements FactoryBean<course>{
//定义返回bean
@Override
public course getObject() throws Exception {
course course = new course();
course.setCname("abc");
return course;
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return false;
}
}
IOC操作Bean管理(Bean的作用域)
1.在Spring里面,设置bean实例是单实例还是多实例
2.在Spring里面,默认情况下,bean是单实例对象
3.如何设置是单实例还是多实例
(1)在spring配置文件bean标签里面有属性用于设置是单实例还是多实例
(2)scope属性值
第一个值 默认值,singleton表示单实例对象
第二个值prototype ,表示多实例对象
<bean id="book" class="com.wyt.spring5.collectiontype.Book" scope="prototype">
<property name="list" ref="bookList"></property>
</bean>
(3)singlteton和prototype区别
第一 singleton是单实例,prototype是多实例
第二 (创建时机不同)设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象
设置scope值是prototype时候,不是在加载spring配置文件时候创建对象,在调用getBean方法时候创建多实例对象
request
session
IOC操作Bean管理(Bean的生命周期)
1.生命周期
从对象的创建到销毁的过程
2.bean生命周期
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean的引用(调用set方法)
(3)调用bean的初始化方法(需要进行配置初始化的方法)
(4)bean可以使用(对象获取到了)
(5)当容器关闭时,调用bean的销毁方法(需要进行配置销毁的方法)
3.演示bean生命周期
public class Orders {
private String oname;
public void setOname(String oname) {
this.oname = oname;
System.out.println("第二步调用set方法设置属性值");
}
public Orders() {
System.out.println("第一步 执行无参构造创建bean实例");
}
public void initMethod(){
System.out.println("第三步 调用bean的初始化方法");
}
public void destroyMethod(){
System.out.println("第五步 执行销毁");
}
}
------------------------------------------------------------------
public void testCollection4(){
ApplicationContext context = new ClassPathXmlApplicationContext("bean4.xml");
Orders orders = context.getBean("orders", Orders.class);
System.out.println("第四步 获取创建bean实例对象");
System.out.println(orders);
//手动让bean实例销毁
((ClassPathXmlApplicationContext)context).close();
}
4.*bean的后置处理器,bean生命周期一共有7步
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean的引用(调用set方法)
+把bean实例传递bean吼住处理器的方法postProcessBeforeInitialization
(3)调用bean的初始化方法(需要进行配置初始化的方法)
+把bean实例传递bean后置处理器的方法postProcessAfterInitialization
(4)bean可以使用(对象获取到了)
(5)当容器关闭时,调用bean的销毁方法(需要进行配置销毁的方法)
IOC操作Bean管理(xml自动装配)
1.什么是自动装配
(1)根据指定装配规则(属性名或者属性类型),Spring自动将匹配的属性值进行注入
2.演示自动装配过程
(1)根据属性名称自动注入
(2)根据属性类型自动注入
<!--实现自动装配
bean标签属性autowire,配置自动装配
autowire属性常用两个值:
byName根据属性名注入,注入值bean的id值和类属性名称一样
byType根据属性类型注入
-->
<bean id="emp" class="com.wyt.spring5.autowire.Emp" autowire="byName">
<!-- <property name="dept" ref="dept"></property>-->
</bean>
<bean id="dept" class="com.wyt.spring5.autowire.Dept"></bean>
IOC操作Bean管理(外部属性文件)
1.直接配置数据库信息
(1)配置连接池
(2)引入德鲁伊连接池依赖jar包
<!--直接配置连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/userDb"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
2.引入外部属性文件配置数据库连接池
(1)创建外部属性文件,properties格式文件,写数据库信息
(2)把外部properties属性文件引入到spring配置文件中
*引入context名称空间
在spring配置文件使用标签引入外部属性文件