<!--BoadDaoImpl class에 dataSource, dbUtil을 넣음 -->
<bean id="boardDao" class="com.ssafy.board.model.dao.BoardDaoImpl">
<constructor-arg ref="dataSource"></constructor-arg>
<constructor-arg ref="dbUtil"></constructor-arg>
</bean>
<bean id="boardService" class="com.ssafy.board.model.service.BoardServiceImpl">
<constructor-arg ref="boardDao"></constructor-arg>
</bean>
<bean id="boadController" class="com.ssafy.board.controller.BoardController">
<constructor-arg ref="boardService"></constructor-arg>
</bean>
<!-- XML에서 Annotation을 사용하겠다고 선언함 -->
<context:component-scan base-package="com.ssafy" />
@Configuration
@ComponentScan(basePackages = {"com.ssafy"})
public class Config {
@Bean
public DataSource dataSource() {
SimpleDriverDataSource s = new SimpleDriverDataSource();
s.setDriverClass(com.mysql.cj.jdbc.Driver.class);
s.setUrl("jdbc:mysql://127.0.0.1:3306/ssafyweb?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8");
s.setUsername("ssafy");
s.setPassword("ssafy");
return s;
}
}
Annotation 방식은 Spring이 알아서 Annotation을 읽어들여 Bean 객체로 만든다.
@Component("BoardServiceImpl")
public class BoardServiceImpl implements BoardService {
private BoardDao boardDao;
public BoardServiceImpl() {
}
@Autowired
public BoardServiceImpl(@Qualifier("BoardDao") BoardDao boardDao) {
super();
this.boardDao = boardDao;
}
}
필요한 의존 객체의 “타입"에 해당하는 빈을 찾아 주입한다.
위의 3가지의 경우에 Autowired를 사용할 수 있다. 그리고 Autowired는 기본값이 true이기 때문에 의존성 주입을 할 대상을 찾지 못한다면 애플리케이션 구동에 실패한다.