Spring注解——使用@Configuration和@Bean注解往容器中注冊(cè)組件

1.首先創(chuàng)建一個(gè) Person 類(lèi),也就是要注入到容器中的 bean。

package bean;

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

    public Person() {
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

2.創(chuàng)建一個(gè) BeanConfig 類(lèi),使用 @Configuration 來(lái)聲明該類(lèi)是一個(gè)配置類(lèi),相當(dāng)于以前的 beans.xml。在配置類(lèi)的方法上使用 @Bean,就會(huì)往容器中注冊(cè)一個(gè)bean,bean 的類(lèi)型就是該方法的返回值,bean 的名稱(chēng)默認(rèn)就是方法名。

package config;

import bean.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BeanConfig {

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

3.查看效果(創(chuàng)建一個(gè) App 類(lèi)),使用 AnnotationConfigApplicationContext 來(lái)獲取使用注解配置的 bean。同時(shí)可以使用 ApplicationContext 的 getBeanNamesForType(配置類(lèi)) 方法獲取相對(duì)應(yīng)的 bean 名稱(chēng)。

import bean.Person;
import config.BeanConfig;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App {
    public static void main(String[] args) {
        ApplicationContext applicationContext =
                new AnnotationConfigApplicationContext(BeanConfig.class);
        Person person = applicationContext.getBean(Person.class);
        System.out.println(person);

        String[] beanNames = applicationContext.getBeanNamesForType(Person.class);
        for (String beanName : beanNames) {
            System.out.println("beanName: " + beanName);
        }
    }
}

運(yùn)行結(jié)果:

Person{name='zhangsan', age=28}
beanName: person

4.修改 bean 名稱(chēng)的兩種方式

// 1. 修改 Bean 名稱(chēng)的第一種方法:直接修改方法名
@Bean
public Person ps() {
    return new Person("zhangsan", 28);
}
// 2. 給 @Bean 注解添加 value 值,如 @Bean(value = "ps")
@Bean(value = "ps")
public Person person() {
    return new Person("zhangsan", 28);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容