FactoryBean
定义的bean类型和返回类型不一样
bean.xml
1 | <bean id="musics" class="bean.Musics"></bean> |
- 创建Musics类
1 | public class Musics implements FactoryBean<Music>{ |
- 测试
1 | Music music =context.getBean("musics", Music.class); |
Bean作用域
- singleton:单实例
- prototype:多实例
- bean.xml
1 | <bean id="music" class="bean.Music" scope="prototype"></bean> |
- 测试
1 | Music music1 =context.getBean("music", Music.class); |
Bean生命周期
- 构造器创建实例
- 设置属性和引用其他bean
- 把实例传递 bean 后置处理器的方法 postProcessBeforeInitialization
- 调用初始化方法
- 把实例传递 bean 后置处理器的方法 postProcessAfterInitialization
- 对象获取
- 销毁实例
- 创建后置处理器类
1 | public class MyBeanPost implements BeanPostProcessor {//创建后置处理器实现类 |
- bean.xml
1 | <bean id="music" class="bean.Music" init-method="initMethod" destroy-method="destroyMethod"> |
- 测试
1 | ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); |
XML自动装配
- byName:根据名字自动装配
- byType:根据类型自动装配
- bean.xml
1 | <bean id="student" class="bean.Student"autowire="byName"></bean> |
- 创建student类
1 | public class Student { |
外部属性文件
直接配置数据库信息
- 引入Druid连接池依赖jar包
- 配置Druid连接池
1 | <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> |
引入外部属性文件配置数据库连接池
- 创建properties文件
- 引入context空间名:xmlns:context=”http://www.springframework.org/schema/context" xsi:schemaLocation=”http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
1 | com.mysql.jdbc.Driver = |
- bean.xml
1 | <context:property-placeholder location="classpath:jdbc.properties"/> |