フィールド注入はどのように対処する推奨されていません

参考資料ます。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->スプリングコア - >コード、フックを削除します。
ここに画像を挿入説明

公開された14元の記事 ウォンの賞賛0 ビュー324

おすすめ

転載: blog.csdn.net/qq_38205881/article/details/104174369