java Spring @Configuration bean的产生

Posted Arvin_Wong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Spring @Configuration bean的产生相关的知识,希望对你有一定的参考价值。

从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

使用@Configuration,意味着对于简单的情况,不需要xml。

1.@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文)

package com.arvin.spring.config;

//相当于xml中的<beans>,作用为:配置spring容器(应用上下文)
@Configuration
public class SpringConfiguration 
	public SpringConfiguration() 
		System.out.println("Spring 容器初始化");
	

2.注册Bean

Bean类:

package com.arvin.spring.bean;

@Data
public class PersonBean 
	private Long id;
	private String name;
	
	public void say() 
		System.out.println("Hello world");
	
	
	public void born() 
		System.out.println("born in "+new DateTime().toString("HH:mm:ss"));
	

	public void die() 
		System.out.println("die in "+new DateTime().toString("HH:mm:ss"));
	

配置类:

package com.arvin.spring.config;

//相当于xml中的<beans>,作用为:配置spring容器(应用上下文)
@Configuration
public class SpringConfiguration 
	
	public SpringConfiguration() 
		System.out.println("Spring 容器初始化");
	
		
        //@Scope(value="propotype")//spring默认单例,可以使用@Scope注解设为原型
	//相当于<bean>,可以指定别名、初始化和销毁
	@Bean(initMethod="born",destroyMethod="die")
	public PersonBean personBean() 
                //真实返回的类
		return new PersonBean();
	

测试:

package com.arvin.spring;

public class TestMain 
	public static void main(String[] args) 
                //@Configuration注解的spring容器加载方式,用AnnotationConfigApplicationContext替换ClassPathXmlApplicationContext
		ApplicationContext annotationConfigApplicationContext
			 = new AnnotationConfigApplicationContext(SpringConfiguration.class);
		beanName默认为方法名
		PersonBean personBean = (PersonBean) annotationConfigApplicationContext.getBean("personBean");
		System.out.println(personBean);//PersonBean(id=null, name=null)
	

或者使用@ComponentScan和@Component扫描注册Bean

package com.arvin.spring.config;

//相当于xml中的<beans>,作用为:配置spring容器(应用上下文)
@Configuration
//相当于<context:component-scan base-package="com.wangrong.spring.bean"/>
@ComponentScan(basePackages="com.arvin.spring.bean")
public class SpringConfiguration 
	
	public SpringConfiguration() 
		System.out.println("Spring 容器初始化");
	

package com.arvin.spring.bean;

@Data
@Component
public class PersonBean implements Person
	private Long id;
	private String name;
	
	public void say() 
		System.out.println("Hello world");
	
	
	public void born() 
		System.out.println("born in "+new DateTime().toString("HH:mm:ss"));
	
	public void die() 
		System.out.println("die in "+new DateTime().toString("HH:mm:ss"));
	

参考:https://www.cnblogs.com/duanxz/p/7493276.html

以上是关于java Spring @Configuration bean的产生的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security getAuthentication() 返回 null

Spring 工具类 ConfigurationClassParser 分析得到配置类

初识spring-boot异步编程

Spring云配置刷新后如何执行自定义逻辑?

Spring Boot:加载DataSource过程的源码分析及yml中DataSource的配置

Spring Security 默认登录页面既不呈现也不能够创建自定义登录页面