java - spring boot @Autowired
問題描述
如何在一個(gè)沒有注解的類中加入一個(gè)已經(jīng)注解的@Autowired?
classA 沒有添加xml也沒有注解到spring中
classB @Component 已經(jīng)加入注解
如何在classA 中用@Autowired 注解classB?
如果classA也 @Component了,classB可用,但是不注解就會報(bào)錯(cuò)。
問題解答
回答1:做個(gè)SpringContextHolder
回答2:@Component 是spring的一個(gè)bean類型的注解,添加有這個(gè)注解之后才會將該bean由spring管理,如果不加這個(gè)注解的話,spring就無法識別這個(gè)類,所以就會報(bào)錯(cuò),如果加上這個(gè)注解之后spring就知道這兩個(gè)類是spring中的兩個(gè)bean,可以相互進(jìn)行自動注入。 對spring的理解還不夠深刻,說的可能有問題,僅僅是個(gè)人見解
回答3:從 applicationContext 中用 service 名獲取。
回答4:@Autowired是表示注入, 要使用注入, 你的類必須交給spring管理, 意思就是你的class B必須是是一個(gè)spring的bean, class A也必須是一個(gè)spring的bean, 你報(bào)錯(cuò)就是因?yàn)槟愕腸lass A不是一個(gè)spring的bean, spring無法幫你注入class B.如果要在不是spring bean的class A中使用class B只能手動把class Bset進(jìn)去.
相關(guān)文章:
1. MySQL數(shù)據(jù)庫中文亂碼的原因2. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?3. mysql - 新浪微博中的關(guān)注功能是如何設(shè)計(jì)表結(jié)構(gòu)的?4. angular.js使用$resource服務(wù)把數(shù)據(jù)存入mongodb的問題。5. dockerfile - [docker build image失敗- npm install]6. angular.js - 關(guān)于$apply()7. android-studio - Android Studio 運(yùn)行項(xiàng)目的時(shí)候一堆警告,跑步起來!?8. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?9. angular.js - Ionic 集成crosswalk后生成的apk在android4.4.2上安裝失敗???10. nignx - docker內(nèi)nginx 80端口被占用
