参考資料ます。https://www.cnblogs.com/wang-yaz/p/9340156.html
参考資料ます:http://www.pianshen.com/article/5023380349/
まず、我々は、その使用を3回の@Autowired注入を理解する必要があります方法:
@Service("accountEmailService")
2 public class AccountEmailServiceImpl implements AccountEmailService{
3
4
5 /** 通过构造器注入---begin **/
6 private JavaMailSender javaMailSender;
7
8 @Autowired
9 public AccountEmailServiceImpl(JavaMailSender javaMailSender){
10 this.javaMailSender = javaMailSender;
11 }
12
13
14 /** 通过set方法注入---begin **/
15 private JavaMailSender javaMailSender;
16 @Autowired
17 public void setJavaMailSender(JavaMailSender javaMailSender){
18 this.javaMailSender = javaMailSender;
19 }
20
21
22 /** 通过field注入 **/
23 @Autowired
24 private JavaMailSender javaMailSender;
25
春は、使用コンストラクタ・インジェクションに推奨されます:
春のチームが推奨しています。「あなたの豆で常に使用コンストラクタベースの依存性の注入は、常に依存関係のために必須アサーションを使用..」
フィールドのNullPointerExceptionにそこに注入することができるので
class MyComponent {
@Inject MyCollaborator collaborator;
public void myBusinessMethod() {
collaborator.doSomething(); // -> NullPointerException
}
}
しかし、コンストラクタ・インジェクションコードは我々だけでなく、捨てられたんという単純な十分ですので。そして実際に、我々は、プロパティ注射でミスを犯していない使用されています。だから、2つのソリューションがあります:
最初:「@Resouce」のコメントに変更し、「@Autowired」ノート。
@Resourceは、JSR-250仕様の注釈で、春には、現在の仕様をサポートしてきました。@Resourceは、タイプに一致するように、再度、少ない取得、BeanのBeanに応じた名前と一致する最初のものです。そして@Autowiredはマッチの種類に基づいており、あなたが持つ@Qualifier注釈作業の名称春でする必要があります。
第二:検査内部注射の変更設定フィールド:設定 - > Editorの>コードSTYLE-> inspection-> spring->スプリングコア - >コード、フックを削除します。