zoukankan      html  css  js  c++  java
  • 001 通过@Configuration和@Bean注解给容器添加Bean

    一 . 概述

      在之前我们使用spring的时候,大多数的时候都是通过xml进行bean的配置.

      在spring3.0之后,出现了编程式的配置,在后面的springboot之中被大量的采用,

      本节,我们学习给容器之中添加Bean.


    二 .@Configuration 注解

      本注解的作用主要有两个:

      我们首先看它的定义:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Configuration {
    
        String value() default "";
    
    }

    我们从上面的定义中可以看到,这个注解实际上就是一个@Component.因此,这个被注解标记的类会被加入到spring容器之中.

    在这个被该注解标记的类之中,我们可以添加给中Bean,我们称这中类为配置类.

    我们可以认为这样的类就是一个spring的配置文件.


    三 .@Bean

    我们首先看一下这个注解的定义:  

    @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Bean {
       
        @AliasFor("name")
        String[] value() default {};
      
        @AliasFor("value")
        String[] name() default {};
       
        Autowire autowire() default Autowire.NO;
       
        String initMethod() default "";
      
        String destroyMethod() default AbstractBeanDefinition.INFER_METHOD;
    
    }

    我们发现这个注解可以标记在方法和注解上面,我们主要标记在方法上.

      被标记的方法的返回值会被加入到springIOC容器之中.

      我们看注解的属性,我们就可以为这个bean指定名字,指定初始化和销毁的方法.


    四 .实例演示

     我们首先创建一个类,如下. 

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

    我们声明一个配置类,并加入这个类的实例到IOC容器之中.

    @Configuration
    public class PersonConfig {
    
        @Bean
        public Person person() {
            Person person = new Person();
            person.setName("trek");
            person.setAge(22);
            return person;
        }
    }

    我们现在做测试,具体如下:  

    @ContextConfiguration(classes= {PersonConfig.class})
    @RunWith(SpringJUnit4ClassRunner.class)
    public class PersonTest {
    
        @Resource
        private ApplicationContext context ;
        
        
        @Test
        public void test() {
            System.out.println(context.getBean("person"));
        }
    }

    通过上面的测试例子,我们可以知道,默认的bean的名字就是方法的名字.

  • 相关阅读:
    session的工作原理
    jsp与servlet
    java对象的克隆以及深拷贝与浅拷贝
    vi和vim编辑器
    远程登录Linux系统(使用xshell),远程上传加载文件(使用Xftp)
    Linux目录结构(目录结构详解是重点)
    虚拟机CentOS克隆
    虚拟机CentOS创建/使用快照
    VMware Tools安装
    VM配置Centos(第十三步分区设置)
  • 原文地址:https://www.cnblogs.com/trekxu/p/9563161.html
Copyright © 2011-2022 走看看