๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ปStudy/Spring

๊ฐ์ฒด DI๋ฅผ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ

 

์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์˜ ์„ค์ •์€ ํฌ๊ฒŒ xml ๋ฐฉ์‹, ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์Šคํ”„๋ง์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ์–ด๋…ธํ…Œ์ด์…˜๊ณผ ์ž๋ฐ” ํŒŒ์ผ์„ ์ด์šฉํ•œ ์„ค์ •์„ ํ•œ๋‹ค.

 

 

servlet-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd"> 
    
    <context:annotation-config />
    
    <bean id="/notice/list" class="com.newlecture.web.controller.notice.ListController">
    	<!-- 
    	<property name="noticeService" ref="noticeService" /> 
		 -->
    </bean>  

	//์ดํ•˜ ์ƒ๋žต
       
</beans>

 

์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ฃผ์ž…ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ํ•„์š”์น˜ ์•Š์€ <property> ํƒœ๊ทธ๋ฅผ ์‚ญ์ œํ•œ๋‹ค. ์ด ์ƒํƒœ๋กœ ์‹คํ–‰ํ•˜๋ฉด ListController์—์„œ ๋„ ํฌ์ธํ„ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์„ธํ„ฐ๋ฅผ ์ด์šฉํ•œ ์ฃผ์ž…์ด ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

context namespace๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  <context:annotation-config /> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด ํƒœ๊ทธ๊ฐ€ ์žˆ์–ด์•ผ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค๋Š” ์ธ์‹์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

ListController.java

public class ListController implements Controller{
	
	@Autowired
	private NoticeService noticeService;

/*
	@Autowired
	public void setNoticeService(NoticeService noticeService) {
		this.noticeService = noticeService;
        System.out.println("์„ธํ„ฐ์—์„œ ์–ด๋–ค ํ–‰๋™์„ ๋ฐ”์ธ๋”ฉ ํ•ด์•ผ ํ•˜๋ฉด ์—ฌ๊ธฐ์„œ autowired");
	}
*/

 

NoticeService ํ•„๋“œ์— @Autowired ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๋งŒ์•ฝ ์„ธํ„ฐ์—์„œ ์–ด๋–ค ๋™์ž‘ ๋ฐ”์ธ๋”ฉ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์„ธํ„ฐ์— ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์ผ ์ˆ˜๋„ ์žˆ๊ฒ ์œผ๋‚˜, ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์œผ๋ฉด ํ•„๋“œ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ„ํŽธํ•˜๋‹ค.

 

 

service-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> 
        
    <context:annotation-config />
    
    <bean id="noticeService" class="com.newlecture.web.service.jdbc.JDBCNoticeService">
    	<!-- <property name="dataSource" ref="dataSource"/> -->
    </bean>
    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
    	<property name="url" value="jdbc:oracle:thin:@14.35.198.58:1522/orcl" />
    	<property name="username" value="USER01" />
    	<property name="password" value="1111" />
    </bean>
</beans>

 

 

JDBCNoticeService.java

public class JDBCNoticeService implements NoticeService{
	
	@Autowired
	private DataSource dataSource;

 

service-context.xml, JDBCNoticeService.java๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •ํ•œ๋‹ค. property๋ฅผ ์ง€์šฐ๊ณ @Autowired๋ฅผ ํ•„๋“œ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 


๋‰ด๋ ‰์ฒ˜ ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๊ฒŒ์‹œ๊ธ€์ž…๋‹ˆ๋‹ค.

www.youtube.com/user/newlec1