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()

posted @ 2019-05-14 11:07  乔儿的终极小迷弟  阅读(185)  评论(0编辑  收藏  举报