1.配置Bean使用@Component注解
如需为Bean定义名称,在参数中添加Bean名称@Component("beanName")
2.设定Spring的自动扫描路径,用于检测对应的Bean是否配置了注解,并加载配置了注解的类 a)开启context空间的支持
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
">
b)开启自动扫描功能,并指定扫描的路径
<context:component-scan base-package="cn.itcast.annotation"></context:component-scan> 说明:扫描路径可以设置多个,中间使用,隔开,扫描路径包含指定包和子包内所有的类
3.Spring提供了3个注解开发Bean的兼容格式,用于后期分层设计扩展
@Repository 用于数据层实现类标注
@Service 用于业务逻辑层实现类标注
@Controller 用于控制层实现类进行标注
4.为Bean注入简单类型属性
a)在属性名上方声明该属性自动装配@Autowired
b)在属性名上方声明该属性注入的值@Value(value)
@Autowired
@Value("itcast")
private String msg;
注意:注解自动装配属性值无需提供对应属性的setter方法
5.为Bean注入引用类型属性
a)在属性名上方声明该属性自动装配@Autowired
b)在属性名上方声明该属性注入的值@Qualifier(bean引用名称)
@Autowired
@Qualifier("anno2")
private AnnotationOther other;
注意:被注入的Bean一定要存在,无需提供对应属性的setter方法
6.@Autowired注解属性required用于声明自动装配的数据是否是必须的
如果required=true,必须为其装配数据,如果没有值,抛出异常
如果required=false,自动装配数据失败,则注入值为null
7.Spring支持JSR-250规范提供的@Resource注解的支持
格式一:@Resource(name="myImpl")
格式二:@Autowired(required=false)
@Qualifier("myImpl")
以上两种格式效果相同
8.Bean声明周期注解 @PostConstruct 功能:为当前Bean指定init-method参数 格式:定义在成员方法的上方,兼容静态方法 @PreDestroy 功能:为当前Bean指定destory-method参数 格式:定义在成员方法的上方,兼容静态方法 注意:要求当前类被注册为Bean,否则无效果 9.Bean作用域注解 在类的定义上方添加@Scope指定Bean的作用域 常用:@Scope("prototype") 默认:@Scope("singleton") 10.Spring3.0注解支持 @Configuration配置当前类为配置类,用于加载其中配置的Bean,与静态工厂初始化Bean很相似 @Bean(name="b1")将配置类中的某个方法的返回值声明为Bean,该方法必须返回一个对象 @Configuration //设定该类参与自动扫描 public class MyBeanFactory { @Bean(name={"aa","bb","cc"}) //设定该方法的返回值是一个Bean public static BookService getInst(){ return new BookService(); } } 以上操作必须基于自动扫描功能,如不开启自动扫描,Spring将无法查找到对应的注解配置 11.可以不使用自动扫描使用Bean AnnotationConfigApplicationContext对象可以手工加载基于注解配置的Bean //用于手工添加注解开发Bean的上下文对象 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); //加载配置管理类 ctx.register(MyConfiguration.class); //刷新上下文对象 ctx.refresh(); 注意:注册完成后一定要进行刷新,否则加载的Bean将无法被使用