Spring注解@Configuration与@Bean注册组件的使用详解

发布时间:2023-11-30 16:30

目录
  • 原始Spring开发
    • Person.java
    • pom.xml
    • bean.xml
    • PersonTest.java
  • 注解Spring开发

    原始Spring开发

    Person.java

    准备Person.java类:

    package com.jektong.spring;
    public class Person {
    	private String name;
    	private int age;
    	public Person() {
    		super();
    	}
    	public Person(String name, int age) {
    		super();
    		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 + \"]\";
    	}
    }

    pom.xml

    在pom文件导入Spring基本依赖:

    
    	4.0.0
    	com.jektong
    	maven01
    	0.0.1-SNAPSHOT
    	maven01
    	maven01
    	
    		
    		
    			org.springframework
    			spring-context
    			4.3.12.RELEASE
    		 
    	
    

    bean.xml

    在没有使用Spring注解开发之前,我们通常会通过一个xml配置文件(bean.xml)去将我们需要使用的对象通过Bean的方式去注入到Spring容器中。

    下面就是将Person作为对象注入Spring容器中:

    
    	
    		
    		
    	
    

    PersonTest.java

    使用一个PersonTest.java测试类测试:

    package com.jektong.spring;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class PersonTest {
    	public static void main(String[] args) {
            // 加载配置文件,此文件放在类路径下。
    		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(\"bean.xml\");
            // 获取bean.xml文件中注入的Person对象,并输出。
    		Person bean = (Person) applicationContext.getBean(\"person\");
    		System.out.println(bean);		
    	}
    }

    输出结果如下:

    \"Spring注解@Configuration与@Bean注册组件的使用详解_第1张图片\"

    注解Spring开发

    舍弃上面的bean.xml文件,通过注解的方式将xml文件转换成配置类,建立PersonConfig配置类:

    package com.jektong.config;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import com.jektong.spring.Person;
    @Configuration // 告诉spring这是配置类相当于配置文件bean.xml
    public class PersonConfig {
        // 这是注入到spring容器的对象ID
        // 括号内指定唯一ID,不指定则是默认以方法名为唯一ID,相当于:标签中的ID值。
    	@Bean(\"person01\") 
    	public Person person() {
    		return new Person(\"李四\",21);
    	}
    }

    测试使用AnnotationConfigApplicationContext类读取注解:

    package com.jektong.spring;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.annotation.AnnotationConfigApplicationContext;
    import com.jektong.config.PersonConfig;
    public class PersonTest {
    	public static void main(String[] args) {	
    		ApplicationContext ac = new AnnotationConfigApplicationContext(PersonConfig.class);
    		Person bean = ac.getBean(Person.class);
    		System.out.println(bean);
            // 查看BEAN的id
    		String[] beanDefinitionNames = ac.getBeanNamesForType(Person.class);
    		for (int i = 0; i < beanDefinitionNames.length; i++) {
    			System.out.println(\"beanid为:\"+ beanDefinitionNames[i]);
    		}
    	}
    }

    输出如下:

    \"\"

    @Configuration与@Bean作用总结

    @Configuration

    相当于spring中的XML配置文件,将此XML文件替代成配置类,声明在类上。

    @Bean

    相当于XML文件中所配置的各个Bean对象,现声明在方法上,默认以方法名作为注入的Bean的id。

    到此这篇关于Spring注解@Configuration与@Bean注册组件的使用详解的文章就介绍到这了,更多相关Spring @Configuration内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    ItVuer - 免责声明 - 关于我们 - 联系我们

    本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

    桂ICP备16001015号