@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值作为键。