Spring注解驱动知识点简单记录二

一:按条件注册bean之@Conditional

  1. 简介
     此注释使得只有在特定条件满足时才启用一些配置。
  2. 现在我们创建了配置类,并且在配置类里面创建了构建bean对象的方法
             
  3. 测试类
      
  4. 效果:
     
  5. 实例:现在我们要求根据一定的条件去创建不同名称的bean对象,例如:通过判断当前的操作
               系统类型创建,如果是window系统就创建名称为lisi的person对象,如果是linux系统就创
               建名称为zs的person对象。
     a:创建两个实现了Condition接口的实现类(想要在@Conditional注解中使用下面的类就必须实现Condition接口)
           
           
     b:配置类
           
    c:测试类
          
    d:效果
         
  6. 注意:@Conditional这个注解,不仅仅可以标注在方法上,还可以标注在类上,如果
    标注在类上的话就表示,只有满足@Conditional这个注解的条件,这个类中的方法才会
    生效。
    a:现在我们将@Conditional注解放到配置类上,并且使用WindowCondition条件
                    
           运行测试类效果:
                 
     b:现在我们将@Conditional注解放到配置类上,并且使用LinuxCondition条件
          
          运行测试类效果:
          

二:给容器中快速导入一个组件@Import

  1.  简介
     ⑴给容器中注册组件的两种方式
          a:给自己写的类注册
                包扫描+组件标注注解(@Controller/@Serivce/@Repository/@Component)  
          b:不是我们自己写的类,比如是我们导入的第三方包,在包里面的类没有加上上面的注解
                使用@Import快速的给容器中导入一个组件,容器中就会自动注册这个组件,id默认全
                类名。
  2. 实例:
     a:首先我们创建一个Color类
        
     b:配置类
         
     c:测试类
          
     d:效果
          
  3. 下面我们使用@Import注解导入Color类
         
       效果:
          

三:组件之ImportSelector

  1.  简介
     使用ImportSelector选择器,将会返回需要导入的组件的全类名数组。
  2. 实例
     a:创建两个实体类blue,yellow
                 
          
      b:创建实现ImportSelector接口的实现类
          
      c:配置类
          
      d:测试类
          
      e:效果
          
          

四:组件之ImportBeanDefinitionRegistrar

  1. 简介
     可以利用ImportBeanDefinitionRegistrar进行手动注册bean对象到容器中去。
     
  2. 实例
     a:创建实现了ImportBeanDefinitionRegistrar接口的实现类
                   
      b:配置类
              
      c:运行测试类的效果
           

五:@Bean生命周期之初始化和销毁方法

  1.  简介
     bean的生命周期指的是bean从创建到初始化到销毁的过程。并且bean的生命周期是由
     容器来管理的。
  2. 单实例时候初始化和销毁的例子
     a:创建实体类
                  
     b:创建配置类(默认单实例)
         
    c:创建测试类
         
    d:效果
         
  3. 那么在多实例的情况下呢?
      a:我们将配置类加上多实例的配置
           
      b:运行测试类效果
           
     c:原因
           因为多实例初始化容器的时候是不会创建bean对象的,只有在获取bean实例对象的时候它才会创建
           bean对象,所以我们可以尝试获取我们需要创建的bean对象,就会调用初始化方法了。但是它是不会
           调用销毁的方法的,因为容器不会管理这个多实例的bean的,容器只会帮助创建这个多实例bean,所以
           容器不会调用销毁方法。如果需要销毁就必须手动自己调用。
     d:在测试类中加上获取bean对象的方法
           
          效果:
               
  4. 实现初始化和销毁的方法我们还可以通过实体bean实现InitializingBean(初始化接口)和
    DisposableBean(销毁接口)去解决。
    a:创建实体类
          
     b:配置类
         
     c:测试类
         
     d:效果
         
  5. 初始化注解PostConstruct和PreDestroy
     a:简介
          @PostConstruct:在bean创建完成并且属性赋值完成之后,再执行初始化方法。
          @PreDestroy:在容器销毁bean之前通知我们进行清理工作
    b:创建实体
          
    c:配置类
         
    d:测试类
         
    e:效果
        

 

上一篇:Spring注解驱动知识点简单记录一

下一篇:Spring注解驱动知识点简单记录三

文章目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值