2017-11-08 8 views
-2

@Autowired春のフィールドをDI propuse専用に設定するとよいでしょうか?Springの@Autowiredフィールドをプライベートに設定するのはよい習慣ですか?

誰もがクラスの外で直接これらのフィールドにアクセスしたいので、これはすべきだと思います。

しかし一方で、Springはこれらにアクセスする必要があります。私はそれが私的であるときにもそうすることができると知っていますが、それはトラブルを引き起こしますか?パフォーマンスの問題など(この場合、SpringがReflectionを使用すると、パフォーマンスが低下する可能性があります。)またはこれは重要ではありませんか?

私はグーグルでこの質問の回答を検索するためのチュートリアルを読みましたが、「良い」回答は見つかりませんでした。

このフィールドのアクセス修飾子として最適なものはどれですか? これを理解したり、回答を見つけることができるリソースを教えてもらえますか?

+0

それはあなたのアプリケーションのためのフィールドの可視性に依存します。それは '@ Autowired'で注釈が付けられている場合、それは無関係ですか? – Jens

+1

"最良の"方法は、コンストラクタインジェクションによるオートワイヤリングを使用することです。しかし、何が最善であるかは本当に賛成です。 Springのドキュメンテーションがあなたにするよう指示するだけで、それは簡単です。 https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-spring-beans-and-dependency-injection.html – Gimby

+0

DIが発生するプライベートフィールドを使用すると、パフォーマンスが向上しません落としたり、他の問題? – SiGe

答えて

0

あなたがオブジェクトの値を処理するためにコンテナを指定したオブジェクトをautowiredとしてマークすると、コンテナからパブリックにアクセスできるようにするだけです。だからすでにpublicとsingletonとして定義されています。つまり、クラスの外部からアクセスできないように参照をプライベートとして設定できますが、その値はコンテナを介してアクセス可能なままです。これらの変数をプライベートに設定したい場合、これはあなたを傷つけることはありませんが、明らかにそれは法律ではありません。あなたが公演を見ているなら、私的または公的に何も変わらないことを確かめてください。正しいスコープ(シングルトン、プロトタイプなど)を選択してください。これが役立ちます。 あなたはより多くの情報がこれらの質問を読んで必要な場合:

How does @autowired annotation works for a private field?

How does Spring @Autowired work

why @autowired in spring does not need setter method for private instance variable?

関連する問題