Spring注解01——给容器注入一个组件

本文介绍了如何使用@Configuration和@Bean注解在Spring Boot中注入组件。通过配置类和@Bean注解,可以将对象注册到IoC容器,并自定义bean的名称。示例展示了如何创建Person类并注入到容器中,同时演示了如何定义多个具有不同名称的bean。最后,通过测试类展示容器中所有组件的名称。
摘要由CSDN通过智能技术生成

1. 如何给容器中注入组件

@Configuration:给容器中添加一个用于表示配置信息的组件
@Bean:将对象作为组件注入到容器中

实战演示

  1. 首先声明一个 Person 类,其只有两个属性 name 和 age
  2. 声明一个 的配置类,并且将其作为一个配置类型的组件注入到容器中。
  3. 由于 @Bean 注解一般不能用于类上,都是方法级别的注解,通常为了代码设计,一般将bean组件与配置类一起注入。
public class Person {
    
    private String name;
    private Integer age;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    public Person(String name, Integer age) {
        super();
        this.name = name;
        this.age = age;
    }

    public Person() {
        super();
    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    
}
@Configuration 
public class MainConfig {

    @Bean
    public Person person() {
        return new Person("zhangsan", 20);
    }
    
}

2. 支持组件自定义名称

@Bean注解是给IOC容器中注册一个bean,类型自然就是返回值的类型,bean 的名称默认采用方法名,当然用户可以通过属性自己定义。
比如我可以给容器注入两个组件,一个叫做child,一个叫做 adult

@Bean(value = "child")
public Person personChild() {
    return new Person("张三", 20);
}

@Bean(value = "adult")
public Person personAdult() {
    return new Person("蜡笔小新", 20);
}

通过测试类查看当前容器中存在的所有 组件

public class TestMain {

    public static void main(String[] args) {
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class);
        System.out.println("=====所有的Bean对象=====");
        String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
        for (String s : beanDefinitionNames) {
            System.out.println(s);
        }
    }
}

通过输出我们可以看出

=====所有的Bean对象=====
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalRequiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
mainConfig
child
adult

同样 @Configuration 也可以自定义名称,则会在容器中按照自定义的名称命名。

@Configuration(value = "secondConfig")
public class MainConfig {
  ……
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值