Dependency Injection:
객체 간의 의존관계를 자신이 아닌 외부의 조립기가 수행.
제어의 역행(IoC)라는 의미로 사용
DI를 통해 시스템에 있는 각 객체를 조정하는 외부 개체가 객체들에게 생성시에 의존관계를 주어짐
DI의 주요 강점은 느슨한 결합이다.
객체는 인터페이스에 의한 의존관계만을 알고 있으며, 이 의존 관계는 구현 클래스에 대한 차이를 모르는 채 서로 다른 구현으로 대체 가능
Spring Container가 DI 조립기를 제공한다.
스프링 설정 파일을 통해 객체간의 의존관계를 설정할 수 있다.
Spring Container는 설정파일에 설정된 내용을 읽어 Application에서 필요한 기능들을 제공한다.
Root tag는 < beans >이다. 파일명은 상관 없음.
<?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&useUniCode=yes&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>
ApplicationContext context = new ClassPathXmlApplicationContext("com/ssafy/configuration/applicationContext.xml");
GuestBookService guestBookService = context.getBean("gbService", GuestBookService.class);