@lazy
这个注解和spring 单例结合使用,当你需要用这个bean时才会去选择创建。
@Configuration
这个类似于我们之前的bean配置文件,在里面,我们通过@Bean注解注入bean到bena容器
@Conditional
这个注解,按照条件来注入bean。这个注解里面有个参数,就是一个Conditional接口数组,里面有个方法返回布尔。
@import
里面有个参数是Class数组,如果是普通的类直接注入进去,如果是实现了ImportSelector接口的,则将实现这个接口方法的返回值注入进去,实现这个接口注入的bean的id都是类全限定名。第三个就是实现了ImportBeanDefinitionRegistrar接口的bean,在这个方法里面可以主动注册bean到bean容器里面。
factorybean
这个bean比较特殊,这类bean是实现了factorybean接口的类,里面有个getObject方法,当我们尝试将这个bean获取的时候,返回的对象是其getObject方法返回的对象。如果要获取这个bean本身,那么我们调用getBean时,需要加个&符号就可以了
bean的生命周期
生命周期为bean的创建,bean的初始化,bean的销毁。初始化方法是在对象初始化装配结束后执行的。
我们可以在在@Bean注解上面指定初始化方法和销毁方法这个方法必须在你的bean定义里面。bean的销毁是在容器关闭的时候进行,初始化则是在容器创建后执行。
或者实现InitializingBean,DisposableBean方法来实现初始化和销毁方法。
或者通过注解@PostConstruct ,@Predestroy放到类对应方法上。
或者通过接口BeanPostProcessor有2和方法,第一个方法,是在初始化方法调用执行前执行,一个是初始化执行后调用。将这个实现了这个接口的方法加入到bean,就可以在所有的bean的初始化方法调用前后执行。