● 注意:使用註解並不能完全取代xml配置,比如配置連線池DruidDataSource,我們就不能到這個類中去貼註解。
-
想要實現零配置(完全不使用xml進行配置):javaConfig + 註解
● DI註解:註解配置 <context:congfig-config/>
● IoC註解:元件掃描器 <context:component-scan base-package=""/>
一、通過註解自動裝配(比起xml配置的物件型別配置ref,更加推薦使用註解注入
)
1、 DI 註解:@Autowired
、@Resource、@Value
- value註解的威力: 結合動態properties配置檔案引入值變數 @Value("${service.port}")
★ 注入:
-
常量型別 value Value
-
物件型別 ref Autowired/Resource
(1)在配置檔案中新增註解的解析器的配置:
<!-- DI註解的解析器 -->
<context:annotation-config/>
(2)使用註解@Autowired
□ Autowired 註解尋找 bean 的方式:
1) 首先按照依賴物件的型別找,如果找到,就是用 setter 方法或者欄位直接注入;
2)如果在 Spring 上下文中找到多個匹配的型別,再按照名字去找,如果沒有匹配報錯;
3)可以通過使用 註解@Qualifier("id名字") 來規定依賴物件按照 bean 的 id 和型別的組合方式去找
■ DI註解 Autowired 和 Resource(都需要配置DI註解的解析器):
-
Spring官方是使用:Autowired
-
javaEE規範:Resource 【依賴:javax.annotation-api.jar】
2、IoC 註解:
(1)在配置檔案中新增註解的解析器的配置:
<!-- IoC註解的解析器 -->
<context:component-scan base-package="com.shan.ioc"/>
(2)使用註解@Component
(配置Bean
)
- @Component 元件若是不寫value屬性值,此時的bean的id預設是型別首字母小寫
// <bean id="dataSource" class="com.shan.ioc.MyDataSource"/>
@Component("dataSource")
public class MyDataSource {
}
■ bean 元件版型:四個元件的功能是相同的,只是用於標註不同型別的元件。
@Component 泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。
@Repository (持久層)用於標註資料訪問元件,即 DAO 元件。
@Service (業務層)用於標註業務層元件。
@Controller (控制層)用於標註控制層元件(如 struts 中的 Ation,SpringMVC 的 Controller)
3、作用域註解、初始化和銷燬註解: @Scope、@PostConstruct、@PreDestroy
- 其中初始化和銷燬註解【依賴:javax.annotation-api.jar】