注解:

@Configuration:用来标注当前类是一个配置类(等价于配置文件)

@Bean:给容器中注册一个组件,bean 类型就是方法的返回值类型,id 默认是方法名

一、配置文件开发

在没有使用注解开发时,每一个工程都需要配置一个 Spring 的配置文件。

在配置文件中使用 <bean> 标签类给容器中注册添加 bean 对象。

然后就可以根据配置文件来获取容器即获取容器中的 bean 对象。

    public static void main(String[] args) {
        //配置文件方式
        ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
        Person person = (Person) ioc.getBean("person");
        System.out.println("person = " + person);
    }

二、注解开发

@Configuration:用来标注当前类是一个配置类(等价于配置文件)

@Bean:给容器中注册一个组件,bean 类型就是方法的返回值类型,id 默认是方法名;

声明如下的配置类:

//配置类==配置文件, @Configuration 告诉 Spring 是一个配置类
@Configuration
public class MainConfig {

    /**
     * 使用 @Bean 注册一个 bean 组件,bean 类型是返回值的类型,id 默认是方法名即(person)
     * 修改 id 名
     *  1)修改方法名;
     *  2)注解中 value 值即 bean 的 id
     * @return
     */

    @Bean(name = "Person")
    public Person person01() {
        return new Person("李四"20);
    }

}

根据注解配置获取 bean 组件:

    public static void main(String[] args) {
        //配置文件方式
        ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
        Person person = (Person) ioc.getBean("person");
        System.out.println("person = " + person);


        //注解方式
        ApplicationContext ioc2 = new AnnotationConfigApplicationContext(MainConfig.class);

        Person bean = ioc2.getBean(Person.class);
        System.out.println("bean = " + bean);

        //根据类型获取容器中所有组件的名称
        String[] names1 = ioc2.getBeanNamesForType(Person.class);
        for (String s : names1) {
            System.out.println("s = " + s);  //获取类型的名字(ID)
        }

        //获取容器中所有组件的定义名称
        String[] names2 = ioc2.getBeanDefinitionNames();
        for (String name : names2) {
            System.out.println("name = " + name);
        }

    }
posted on 2021-11-12 09:43  格物致知_Tony  阅读(60)  评论(0编辑  收藏  举报