DI(Dependency Injection)

9878 ワード

コンセプト


Dependency Injection:
オブジェクト間の依存関係は、自身のアセンブリではなく外部のアセンブリによって実行されます.
制御を表す逆方向(IoC)
DI制御システムにおける各オブジェクトの外部オブジェクト依存オブジェクトの作成
DIの主な利点は緩和結合である.
オブジェクトはインタフェースの依存関係しか知らず、これらの依存関係は異なる実装に取って代わることができ、実装クラス間の違いを知らない.

スプリングのDIサポート


Spring ContainerはDIアセンブリを提供します.
オブジェクト間の依存関係は、スプリング設定ファイルで設定できます.

DI - XML


Spring Containerは、設定ファイルの設定を読み込むことでアプリケーションに必要な機能を提供します.
roottagはです.ファイル名は関係ありません.

beanオブジェクト注入コード

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id = "ds" class ="org.springframework.jdbc.datasource.SimpleDriverDataSource">
		<property name="url" value = "jdbc:mysql://127.0.0.1:3306/ssafyweb?serverTimezone=UTC&amp;useUniCode=yes&amp;characterEncoding=UTF-8"></property>
		<property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
		<property name="username" value = "root"></property>
		<property name="password" value = "ghkdth429"></property>
	</bean>
	<bean id = "gbDao" class ="com.ssafy.model.dao.GuestBookDaoImpl">
		<property name="dataSource" ref="ds"></property>
	</bean>
	<bean id = "gbService" class ="com.ssafy.model.service.GuestBookServiceImpl">
		<property name="guestBookDao" ref="gbDao"></property>
	</bean>

</beans>
  • -スプリング容器管理のbean対象を設定
  • id:注入する箇所で呼び出す名称
  • class:注入対象クラス
  • init-method:initメソッド設定
  • beanオブジェクトの取得

    ApplicationContext context = new ClassPathXmlApplicationContext("com/ssafy/configuration/applicationContext.xml");
    		
    GuestBookService guestBookService = context.getBean("gbService", GuestBookService.class);