注解主要的目的就是实现零XML配置。
一:自动扫描装配Bean。
spring为咱们引入了组件自动扫描机制,它能够在类路径底下寻找标注了@Component、@Service、@Controller、@Repository注解的类,并把这些类归入进spring容器中管理。它的做用和在xml文件中使用bean节点配置组件是同样的。
1)@Component 将java类标记成一个Spring Bean组件。java
2)@Service 将业务层实现类标记成一个Spring Bean组件。spring
3)@Controller 将表现层类标记成一个Spring Bean组件。session
4)@Repository 将一个持久层实现类标记成一个Spring Bean组件。ui
均拥有value属性,能够取名字;若是没有取名字,默认为类名首字母小写。prototype
二:做用域用scope来指定xml
用来指定bean的做用域对象
singleton---单例 只建立一个对象。作用域
prototype---原型 想建立多少个就建立多少了。原型
request---针对Web项目,不一样的请求建立单独的Bean对象,同一个请求共享一个Bean。it
session---针对Web项目,不一样的会话建立单独的Bean对象,同一个会话共享一个Bean。
三:自动装配(@Autowired)与精确装配
@Autowired注解是按类型装配依赖对象,默认状况下它要求依赖对象必须存在,若是容许null值,能够设置它required属性为false。
一、配置在属性上;
二、配置在set方法上;
三、配置在构造方法上。
自动装配中了解这两个就差很少了
1:byName在容器中寻找和须要自动装配的属性名相同的Bean
2:byType在容器中寻找和须要自动装配的属性类型相同的Bean
@Qualifier配合@Autowired使用。
把按类型配置变为按名称匹配
一、配置在属性上;
二、配置在set方法上;
三、配置在构造方法的参数上。
@Resource (这个注解是最强的)
@Resource注解默认按名称装配。名称能够经过name属性指定,若是没有指定name属性,默认取属性的名称做为bean名称寻找依赖对象。
注意:若是没有指定name属性,而且按照默认的名称找不到依赖对象时,@Resource会回退到按类型装配。但一旦指定了name属性,就只能按名称装配了。
一、配置在属性上;
二、配置在set方法上。