注解 | 含义 |
---|---|
@Controller | 用来定义控制(dao)层的组件 |
@Service | 用来定义业务层(service)的组件 |
@Repository | 用来定义持久层(domain)的组件 |
@Component | 用来定义不在上述范围内的一般性组件(最普通的组件,可以被注入到spring容器进行管理) |
@Controller比较好理解,加到Controller上就行了。Java web服务的项目可以用@RestController。
@Service和@Component分不太清,点进去@Service的源码,发现 @AliasFor(annotation = Component.class),@Controller和@Repository也有,可以认为@Service,@Controller和@Repository都可以作为@Component使用,只是从工程规范上区分,@Service用在XXXService上,用来标识处理业务逻辑的类,而@Component倾向于组件,比如一些Util,Filter之类的,只能保证可以被注入到spring容器进行管理。
那么创建了上面这些组件后,又是如何来注入的呢,这时就由@autowired来配置了。
只需要在private的属性上加上@autowired就可以自动把接口属性的实现类的bean注入,注意不需要setter、getter方法
上面如果一个接口属性有两个实现类,怎么办,这时就要用@qualifier来特别说明要注入哪个bean了。