1. 程式人生 > >Spring中Bean的註冊與注入——註解方式

Spring中Bean的註冊與注入——註解方式

<beans>
    // 註解Autowired的註解處理器
    <bean class="....AutowiredAnnotationBeanPostProcessor" />
    // 註解Resouce、PostConstruct、PreDestroy的註解處理器,符合JSR-250標準的註解
    <bean class="....CommonAnnotationBeanPostProcessor" />
    // 註解PersistenceUnit、PersistenceContext的註解處理器
    <bean class="....PersistenceAnnotationBeanPostProcessor"
/> // 註解Required的註解處理器 <bean class="....RequiredAnnotationBeanPostProcessor" /> // 此句可直接代替上述四個配置 <context:annotation-config /> // 使用上述註解的類必須先被註冊為bean,開啟註解掃描,上述所有功能用如下一句話完成 // 可掃描類前的註解Component、Repository、Service、Controller,四個註解可將其標註的類註冊為bean <context:component-scan base-package
="..*" /> // 完成aop的註解Aspect、Pointcut、Before、After、Around的註解處理器,預設false使用jdk動態代理,true使用cglib <aop:aspectj-autoproxy proxy-target-class="true" /> </beans> // 註解Component標註任何類,其擴充套件Repository標註dao、Service標註服務、Controller標註控制器,引數為bean的id // 註解Scope指定bean的作用域,預設singleton,如果dao、service、controller全部使用預設單例,在設計時就必須規避併發問題
// 同一個例項多執行緒會共享成員屬性,區域性屬性為執行緒獨有,由此在設計dao、service、controller時,使用者自己定的變數必須為區域性 @Repository("xxDao") @Scope("singleton") public class XxDaoImpl implements XxDao { .. } @Service("yyServiceRpc") public Class YyServiceRpc { // 外部服務 public YyService yyService; .. } @Service("xxService") public class XxServiceImpl implements XxService { // 預設按屬性名尋找匹配的bean,找不到按屬性型別尋找匹配的bean // 可通過引數使其按指定的名字尋找匹配的bean,找不到報錯,不會再按屬性型別尋找匹配 @Resource(name = "xxDao") XxDao xxDao; // 註解Autowired按屬性型別尋找匹配的bean,引數required設定允許找不到bean,一般僅在測試用 // 若匹配型別的bean有多個會拋異常,註解Qualifier指定按給定的名字尋找匹配的bean @Autowired(required = false) @Qualifier("yyServiceRpc") YyServiceRpc yyServiceRpc; .. }