@Component组件
标识一个受Spring IOC容器管理的组件
@Repository
标识一个受SpringIOC容器持久化层的组件
@Service
标识一个SpringIOC容器的业务逻辑层组件
@Controller
标识一个SpringIOC容器管理的表述层的控制器组件
- 组件命名规则
- 默认情况:使用组件的简单类名首字母小写后得到的字符串作为bean的id
- 我们可以使用组件注解的value属性指定bean的id,value属性名可以省略
组件扫描:
类别 |
示例 |
说明 |
annotation |
com.a.XxxAnnotation |
过滤所有标注了XxxAnnotation的类。这个规则根据目标组件是否标注了指定类型的注解进行过滤。 |
assignable |
com.a.BaseXxx |
过滤所有BaseXxx类的子类。这个规则根据目标组件是否是指定类型的子类的方式进行过滤。 |
aspectj |
com.a.*Service+ |
所有类名是以Service结束的,或这样的类的子类。这个规则根据AspectJ表达式进行过滤。 |
regex |
com\.a\.anno\.* |
所有com.atguigu.anno包下的类。这个规则根据正则表达式匹配到的类名进行过滤。 |
custom |
com.a.XxxTypeFilter |
使用XxxTypeFilter类通过编码的方式自定义过滤规则。该类必须实现org.springframework.core.type.filter.TypeFilter接口 |
给Bean的属性值注入值:(自动装配的方式)
可以通过spring注解的方式实现属性的装配的。
@Autowired注解
- 构造器、普通字段(即使是非public)、一切具有参数的方法都可以应用@Autowired注解。
- 默认情况下,所有使用@Autowired注解的属性都需要被设置。当Spring找不到匹配的bean装配属性时,会抛出异常。
- 若某一属性允许不被设置,可以设置@Autowired注解的required属性为 false。
- @Autowired注解也可以应用在数组类型的属性上,此时Spring将会把所有匹配的bean进行自动装配。
- @Autowired注解也可以应用在集合属性上,此时Spring读取该集合的类型信息,然后自动装配所有与之兼容的bean。
- @Autowired注解用在java.util.Map上时,若该Map的键值为String,那么 Spring将自动装配与值类型兼容的bean作为值,并以bean的id值作为键。