016 @Configuration和@Bean

Posted 最爱五仁月饼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的名字.

以上是关于016 @Configuration和@Bean的主要内容,如果未能解决你的问题,请参考以下文章

@Configuration 和 @Bean

Springboot@Configuration和@Bean详解

@Configuration和@Bean 配置类注入

@Configuration与@Bean作用

016-hibernateutils模板

Spring的Java配置方式—@Configuration和@Bean实现Java配置