@Autowiredは使わない方針でしょうか?
Closed this issue · 3 comments
いつも参考にさせてもらっています。
SpringBootのサンプルなどを見ると@Autowiredを使っているのが多いですが、isolating-the-domainでは使っていません。
何か特別な理由があるのでしょうか?
@Autowired のアノテーションは明示的に記述していません。暗黙的にコンストラクタでインジェクションしてくれるSpringに仕組みを使っています。
(@controller, @service, @repository でアノテーションしているクラスは、ほとんどがこの仕組みを使っています)
コンストラクタに、@Autowired を記述する、という選択肢はありますね。
横から失礼します
SpringBootのサンプルなどを見ると
@Autowired
を使っているのが多いですが
コンストラクが一つの場合に@Autowired
を省略できるようになったのが、Spring Framework 4.3、Spring Boot 1.4からのなので、それを知らないか名残で@Autowired
を使い続けている例があるのだと思います。
そもそもコンストラクタインジェクションとフィールドインジェクションとセッターインジェクションどれがいいかについては、フィールドをfinal
にできる点でコンストラクタインジェクションが良いです。
これはSpringのドキュメントにも書かれています。
The Spring team generally advocates constructor injection, as it lets you implement application components as immutable objects and ensures that required dependencies are not null.
コンストラクタインジェクションの@Autowired
が省略できるようになる前は、フィールドインジェクションの方が、記述量が少なくなることが多いためか使われることが多かったですが、Spring 4.3から明確にコンストラクタインジェクションの方が楽になったし、final
にもできるので、現時点でコンストラクタインジェクション+@Autowired
なしを選ばない理由はないと思います。