注解注入顧名思義就是通過注解來實現注入,
Spring和注入相關的常見注解有Autowired、Resource、Qualifier、Service、Controller、Repository、Component。
1.@Autowired是自動注入,自動從spring的上下文找到合適的bean來注入
@Autowired(required=true)表示必須找到匹配的Bean,否則將報異常。
@Autowired默認按類型匹配注入Bean
在Spring中,@Autowired注入的類型可以是接口
比如,在Service層中注入Dao,如下示:
@Autowired private UserDao userDao;
2.@Resource要求提供一個Bean名稱的屬性,如果屬性為空,自動采用標注處的變量名和方法名作為Bean的名稱 。
@Resource默認按名稱匹配注入Bean
比如,在Controller層中注入Service,名稱為Service的實現類,如下示
@Resource(name = "userServiceImpl") private UserService userService;
另外要注意,@Resource是java自帶的注解,不是Spring中的注解。@Resource注解完整的包路徑為import javax.annotation.Resource;
3.@Qualifier 指定注入bean的名稱
比如,在Controller層中注入Service,名稱為Service的實現類,如下示
@Autowired @Qualifier("userServiceImp") private UserSerevice userService;
4.@Service,@Controller,@Repository分別標記類是Service層,Controller層,Dao層的類,spring掃描注解配置時,會標記這些類要生成bean。
@Repository用於標注數據訪問組件,即DAO組件
@Service,@Controller 這些注解要放在接口的實現類上,而不是接口上面。
5.@Component是一種泛指,標記類是組件,spring掃描注解配置時,會標記這些類要生成bean。
6.@Scope用於指定Bean的作用范圍
7.@Autowired和@Resource是用來修飾字段,構造函數,或者設置方法,並做注入的。
而@Service,@Controller,@Repository,@Component則是用來修飾類,標記這些類要生成bean。