@Autowired (SpringBootのアノテーション)とDIコンテナ

spring

上記の絵の通りになります。
SpringBootでは、DIコンテナという領域があり、ここでインスタンスを管理できます。
ここの管理下に置くための記載が絵の左の部分です。
 ・@Controller
 ・@Service
 ・@Repository
 ・@Component
他にもありますが、用途に分けて名前も分かれている感じですが、どこにも属さないものが@Componentのようなイメージです。

SpringBoot起動時に、フレームワークによってnewされて、コンテナに格納されます。
@Autowiredでこのインスタンスへの参照を引き込むため、明示的にnewしてインスタンス化する必要がありません。

このように、DIコンテナに格納された一つのインスタンスを色々な場所から@Autowiredでアクセス可能なため、これらの考慮が必要なので注意が必要です。

タイトルとURLをコピーしました