3- Spring之AnnotationConfigApplicationContext的2种构造方法

1. 举个栗子

先给出一个小Demo

1.1 POJO

import org.springframework.beans.factory.annotation.Value;

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

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

    public Person() {
    }

    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 String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

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

1.2 配置类 MainConfig

@Configuration
@ComponentScans(
        value = {
                @ComponentScan(value="com")
        }
)

public class MainConfig {
    // 给容器中注册一个Bean,类型为返回值的类型,id默认为方法名
    @Bean("person")
    public Person person(){
        System.out.println("给容器中注册person。。。");
        return new Person("ffff",2222);
    }
}

2 App类- 第一种方式

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

        String[] names = applicationContext.getBeanNamesForType(Person.class);
        for(String a: names)
            System.out.println(a);

    }
}

上面这个例子是向AnnotationConfigApplicationContext构造函数中传入一个注解类来注册组件的。以上是第一种方式ApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig.class); -> 即通过传入一个或者多个注解类来注册组件,传入的类会作为组件被spring容器管理。

3 App类- 第二种方式

public class App
{
    public static void main( String[] args ) {

        ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.spring");
        Person person = applicationContext.getBean(Person.class);
        System.out.println(person);

        String[] names = applicationContext.getBeanNamesForType(Person.class);
        for(String a: names)
            System.out.println(a);

    }
}

第二种方式是:ApplicationContext applicationContext = new AnnotationConfigApplicationContext("com.spring"); -> 传入一个包名,该包下的所有带有注解的类都会创建bean,这些Bean会被Spring容器管理

发布了397 篇原创文章 · 获赞 71 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/xiaojie_570/article/details/104483136