016 @Configuration和@Bean


一. 概述

@Configuration 注解標記在類上,就像之前我們聲明的一個spring的xml配置文件,該類我們稱為配置類.

@Bean 標記在方法之上,方法的返回值為向springIOC容器之中注入一個Bean.

    其中,返回值相當於xml文件bean標簽的class屬性,方法的名稱相當於id屬性.

    我們的property屬性被放置在了方法的實現之中.

  @Bean注解有一個屬性,name屬性,可以幫助我們指定Bean的id的名字.


 二 .測試部分

[1] 創建一個javaBean

public class Person {
    
    private String name; private Integer age;

此處省略getter 和setter方法.

[2]創建配置類

@Configuration //相當於xml的spring配置文件
public class BeanAnnotation {

    @Bean //向容器之中注入Bean組件
    public Person person() { Person person = new Person(); person.setName("trek"); person.setAge(11); return person; } }

[3]測試類

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=BeanAnnotation.class) public class BeanTest { @Autowired private ApplicationContext context ; @Test public void test1() { Person person = context.getBean(Person.class); System.out.println(person); } }

我們使用spring test完成單元測試功能.


 三 .關於Bean的名字

    @Test
    public void test2() { String[] beanDefinitionNames = context.getBeanDefinitionNames(); for (String name : beanDefinitionNames) { System.out.println(name); } }

增加測試代碼:查看輸出---

beanAnnotation
person
我們只看最重要的,person的id為person.現在我們使用@Bean指定Bean的id的名字.

修改之前的代碼:

    @Bean("personName")
    public Person personName() { Person person = new Person(); person.setName("trek"); person.setAge(11); return person; }

在我們的配置類中加入該部分代碼.

再運行上面的測試類:

結果為:---

beanAnnotation
person
personName

我們發現有一個Bean的名字變成了personName,說明可以指定Bean的名字.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM