Spring注入bean的常用的六种方式

一.通过注解注入的一般形式

Bean类

public class TestBean{
}

Configuration类

@Configuration注解去标记了该类,这样标明该类是一个Spring的一个配置类,在加载配置的时候会去加载他。

@Bean的注解,标明这是一个注入Bean的方法,会将下面的返回的Bean注入IOC。

//创建一个class配置文件
@Configuration
public class TestConfiguration{
 //将一个Bean交由Spring进行管理
    @Bean
    public TestBean myBean(){
        return new TestBean();
    }
}

测试类

ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
TestBean testBean = cotext.getBean("testBean",TestBean.class);
System.out.println("testBean = " + testBean);

 

二.通过构造方法注入Bean

我们在生成一个Bean实例的时候,可以使用Bean的构造方法将Bean实现注入

Bean类

@Component
public class TestBeanConstructor {

 private AnotherBean anotherBeanConstructor;

 @Autowired
 public TeanBeanConstructor(AnotherBean anotherBeanConstructor){
     this.anotherBeanConstructor = anotherBeanConstructor;
 }

 @Override
 public String toString() {
     return "TeanBean{" +
         "anotherBeanConstructor=" + anotherBeanConstructor +
         '}';
 }
}

AnotherBean类

@Component(value="Bean的id,默认为类名小驼峰")
public class AnotherBean {
}

Configuration类 

@Configuration
@ComponentScan("com.company.annotationbean")
public class TestConfiguration{
}

 

三.通过set方法注入Bean

@Component
public class TestBeanSet {

 private AnotherBean anotherBeanSet;

 @Autowired
 public void setAnotherBeanSet(AnotherBean anotherBeanSet) {
     this.anotherBeanSet = anotherBeanSet;
 }

 @Override
 public String toString() {
     return "TestBeanSet{" +
         "anotherBeanSet=" + anotherBeanSet +
         '}';
 }
}

 

四.通过属性去注入Bean

@Component
public class TestBeanProperty {

 @Autowired
 private AnotherBean anotherBeanProperty;

 @Override
 public String toString() {
     return "TestBeanProperty{" +
         "anotherBeanProperty=" + anotherBeanProperty +
         '}';
 }
}

 

五.通过List注入Bean

TestBeanList类

方法一:

@Component public class TestBeanList { private List<String> stringList; @Autowired public void setStringList(List<String> stringList) { this.stringList = stringList; } public List<String> getStringList() { return stringList; } }
方法二:

@Configuration @ComponentScan("annoBean.annotationbean") public class TestConfiguration { @Bean public List<String> stringList(){ List<String> stringList = new ArrayList<String>(); stringList.add("List-1"); stringList.add("List-2"); return stringList; } }
方法三:

@Bean //通过该注解设定Bean注入的优先级,不一定连续数字 @Order(34) public String string1(){ return "String-1"; } @Bean @Order(14) public String string2(){ return "String-2"; }

  

六.通过Map去注入Bean

@Component
public class TestBeanMap {

 private Map<String,Integer> integerMap;

 public Map<String, Integer> getIntegerMap() {
     return integerMap;
 }

 @Autowired
 public void setIntegerMap(Map<String, Integer> integerMap) {
     this.integerMap = integerMap;
 }
}

/** *第一种注入map方式 */ @Bean public Map<String,Integer> integerMap(){ Map<String,Integer> integerMap = new HashMap<String, Integer>(); integerMap.put("map-1",1); integerMap.put("map-2",2); return integerMap; }
/** *第二种注入map方式 */ @Bean public Integer integer1(){ return 1; } @Bean public Integer integer2(){ return 2; }

 

posted on 2023-04-17 17:03  回憶′亂人心  阅读(97)  评论(0编辑  收藏  举报