zoukankan      html  css  js  c++  java
  • spring自动装配和通过java实现装配

    1.组建扫描

    在类上添加注解@Component注解可以实现组建扫描

    @Component
    public class A{
       ...  
    }

    2.自动装配

    通过在属性上或者方法上添加@Autowired注解可以实现自动装配(在单例bean,没有歧义的情况下)

    public class B{
       @Autowired
       private A a;
       ...     
      
    }

    public class B{
       @Autowired
       public B(A a){
    ...
    } ... }

    3.通过java代码实现显示装配

    当使用第三方库时,无法实现自动装配,所以需要显示装配bean。在配置类中添加@Configuration注解,在方法上添加@Bean注解实现创建bean。

    装配方式一:
    @Configuration
    public classs C{
       @Bean
       public A getA(){
          return new A();     
       } 
    
        @Bean
        public B setA(){
          return new B(getA());     
       } 
    }
    
    装配方式二:
    @Configuration
    public classs C{
       @Bean
       public A getA(){
          return new A();     
       } 
    
        @Bean
        public B setA(A a){
          return new B(a);     
       } 
    }

    4、自动装配与歧义性

    spring的默认模式是单例模式,只有单例模式时,才可以实现自动装配。为了处理歧义性,有以下几种方式:

    假设有以下多个bean

    @Compant
    public class Icecream extend Dessert{...}
    @Compant
    public class Cookie extend Dessert{...}
    @Compant
    public class Cake extend Dessert{...}

    (1)标识首选Bean

    利用@Primary注解

    @Component
    @Primary
    public class Icecream extends Dessert{...}

    (2)使用限定符表示不同的bean

    @Autowired
    @Qualifier("icecream")//这里使用Icecream类,它的bean的名字默认为类的名字首字母小写,即“icecream”
    private Dessert dessert;

           如果要使用自定义的bean的限定符:

    定义:
    @Component
    @Qualifier("cold")
    public class Icecream extends Dessert{...}
    
    使用:
    @Autowired
    @Qualifier("cold")
    private Dessert dessert;

    5、bean的作用域

    包含四种模式:

    (1)单例模式:整个应用程序,只建立一个实例bean

    (2)原型模式:每次注入或者通过spring上下文获取的时候,就建立一个实例bean

    (3)会话模式:每个会话建立一个实例bean

    (4)请求模式:每次请求建立一个实例bean

    spring默认情况下,是单例模式,如果要用其他模式,可以用@Scope注解,并且配合@Component和@Bean使用。

    @Component
    @Scope("prototype")
    public class A{
       ...
     }
    
    
    @Bean
    @Scope("prototype")
    public A getA(){
        ...  
    }
  • 相关阅读:
    《秋日》 -- 程颢
    《安乐吟》 -- 邵雍
    《大学》笔记
    《跨越鸿沟》笔记
    庄子《齐物论》—— 方生方死、因是因非是对立统一规律的起源
    《饮酒(其五)》陶渊明
    《亲密关系》笔记
    《人生的智慧》笔记
    《历史的教训》笔记
    《格鲁夫给经理人的第一课》笔记
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/10286455.html
Copyright © 2011-2022 走看看