Spring容器启动三要素:Bean的定义,Bean的实现,Spring容器
在基于xml文档配置bean时,Bean的定义与实现是分开的
而采用注解配置时,Bean的定义通过在Bean的实现类上标注注解实现。
- 使用注解定义Bean
@Component 用于任何层次
@Service 用于对Service实现类进行标注
@Controller 用于对Controller实现类标注
@Repository 用于对Dao实现类进行标注
使用这四个注解标注POJO 可以使类被Spring识别,并将其转换成Bean。
作用等同于<bean id=""class=""/>
还可以通过注解的value属性指定Bean的名称。
- 使用<context:compoment-scan base-package=""/>Spring会扫描指定的包,并识别其中的注解信息。
- 装配Bean
对Bean 属性或者方法参数的自动装配,仅限于该属性或参数的类型是对象,Spring会在容器中查找匹配的Ban进行注入,对于基本数据类型,不能实现自动装配,仍需要通过xml文档进行依赖注入
@Autowired 实现bean的依赖注入,默认为按类型匹配
@Autowired(required=false);如果找不到符合要求的Bean不会抛出异常
@Qulifier(““)用于指定注入的名称
@Autowired既可以标注属性,也可以对方法及方法的参数进行标注。
如果对类中集合类型(List,Set,Map)的属性或方法的参数进行@Autowired标注,Spring会将容器中所有类型匹配的Bean注入进来。
对于@Autowired声明的数组、集合类型,spring并不是根据beanName去找容器中对应的bean,而是把容器中所有类型与集合(数组)中元素类型相同的bean构造出一个对应集合,注入到目标bean中。
注入集合类型不要使用@Autowired,而使用@Resource注解。同时Spring官方也是不推荐使用@Autowired的。