zoukankan      html  css  js  c++  java
  • (一)IOC 容器:【1】@Configuration&@Bean 给容器中注册组件

    注解:

    @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);
            }
    
        }
  • 相关阅读:
    angry_birds_again_and_again(2014年山东省第五届ACM大学生程序设计竞赛A题)
    数学入门题目
    POJ1236:Network of Schools(tarjan+缩点)?
    POJ2186:Popular Cows(tarjan+缩点)
    HDU2426:Interesting Housing Problem(还没过,貌似入门题)
    POJ1175:Starry Night(bfs)
    POJ2506:Tiling(递推+大数斐波那契)
    POJ2135:Farm Tour
    POJ2195:Going Home(费用流入门)
    POJ1273:Drainage Ditches(最大流入门 EK,dinic算法)
  • 原文地址:https://www.cnblogs.com/niujifei/p/15543048.html
Copyright © 2011-2022 走看看