一、注解启动和相关注解的说明
从Spring3.0开始,提供了另外一种启动spring容器的方式,用注解@Configuration定义配置类,然后使用AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext实现基于Java配置类的方式加载Spring的应用上下文初始化Spring容器,无需再使用applicationContext.xml进行配置
@Configuration 标注在类上,可以理解为把该类作为配置类,等价于spring的xml配置文件中的<beans>标签,用于配置spring容器(应用上下文)
@Bean 标注在返回实例对象方法上,可理解为用spring的xml配置文中的<bean>标签,用于注册bean对象。通过@Bean注解需要在方法内显式创建对象并返回,注解的Bean的名称默认与标注的方法名相同,可以通过注解属性指定;@Bean注解的默认作用域为单例Singleton作用域,可以通过@Scope("prototype")设置为原型作用域
@ComponentScan 标注在主配置类上,可以理解为Spirng的xml配置文件中的<context:component-scan />标签。配合@Component、@Controller、@Service、@Ripository等注解可以无需@Bean显示创建方式注册对象
二、通过@Configuration+@Bean注解代码注册Bean给Spring管理
1、简单的样例
/**
* 待注册给Spring管理的类
*/
package com.xl.atn;
public class StoreManager {
public StoreManager() {
}
public void init() {
System.out.println("init");
}
public void save(Object o) {
System.out.println("Save Object. obj=" + o + ".");
}
}
/**
* 主配置类
*/
package com.xl.atn;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
@Configuration // 注解声明为配置类
// 相当于 <beans xmlns="http://www.spr