spring
一.spring 加载bean的几种方式(向容器中加载bean)
1.
<bean id="dictionaryRelMap" class="java.util.HashMap"/>
2.
@Component public class xxxServicer{ .... }
3.
@Configuration public class xxxConfiguration{ @Bean public myBean myBean(){ return new myBean(); } }
二、bean的生命周期
bean的生命周期:指 bean创建-----初始化----销毁 的过程
bean的生命周期是由容器进行管理的
我们可以自定义 bean初始化和销毁 方法: 容器在bean进行到当前生命周期的时候, 来调用自定义的初始化和销毁方法
如何定义和销毁(4种方式):
1) 指定初始化和销毁方法 <之前在beanx.xml, 可以指定init-method和destory-mothod>
用注释如何做: 新建Bike.java
2) 指定初始化和销毁方法
在配置类里通过@Bean(initMethod="init", destroyMethod="destroy")指定
3)让Bean实现 InitializingBean 和 DisposableBean接口
重写afterProperties、destroy方法
4)可以使用JSR250规则定义的(java规范)两个注解来实现
@PostConstruct: 在Bean创建完成,且属于赋值完成后进行初始化,属于JDK规范的注解
@PreDestroy: 在bean将被移除之前进行通知, 在容器销毁之前进行清理工作
三、以下是后置处理器,负责在初始化方法(init)前后作用
BeanPostProcessor类[interface]: bean的后 置处理器,在bean初始化之前调用进行拦截
作用:在bean初始化前后进行一些处理工作, 打开此类
a> postProcessBeforeInitialization():在初始化之前进行后置处理工作(在init-method之前),
什么时候调用:它任何初始化方法调用之前(比如在InitializingBean的afterPropertiesSet初始化之前,或自定义init-method调用之前使用)
b> postProcessAfterInitialization():在初始化之后进行后置处理工作, 比如在InitializingBean的afterPropertiesSet()
四、使用@Value赋值
1.@Value("我是值") 使用字符串
2.@Value("#{18}") 使用EL表达式
3.@Value("${base,data}") 读取配置文件的值(运行在环境变量的值)
使用@PropertySource(value={"classpath:/test.properties"}) 加载配置文件
五、@Qualifier
可以使用@Autowired和@Qualifier结合来指定注入哪一个bean,
@Qualifier("test2")
@Autowired
private Test test;
以上会加载bean Id 为test2的bean
六、@Resource @Inject 和Autowired的区别如下:
@Resource和Autowired一样可以装配bean
@Resource缺点: 不能支持@Primary(优先加载)功能
不能支持@Autowired(required = false)的功能
@Inject 不是spring的注入,支持@Primary(优先加载)功能 不支持@Autowired(required = false)的功能
七、beanfactory factorybean区别
BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似
FactoryBean是一个接口,当在IOC容器中的Bean实现了FactoryBean后,通过getBean(String BeanName)获取到的Bean对象并不是FactoryBean的实现类对象,而是这个实现类中的getObject()方法返回的对象。要想获取FactoryBean的实现类,就要getBean(&BeanName),在BeanName之前加上&。
http://www.cnblogs.com/aspirant/p/9082858.html
八、AOP通知方法
前置通知: @Before
后置通知:@After
返回通知:@AfterReturning
异常通知:@AfterThrowing
环绕通知:@Around
九、IOC创建
IOC-->Beanfactory-->getBean()