개발

20.8.19 Spring 의존성 주입 테스트 (bean)

Handy Smurf 2020. 8. 19. 17:25

1. 프로젝트 생성 sample project 생성 > 패키지 org.zerock.sample > finish

 

org.zerock.sample 패키지 생성

2. pom.xml 수정

<상단>
<java-version>1.8</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>


<하단>
<source>1.8</source>
<target>1.8</target>
<!-- 4.7에서 4.12로 수정 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version> 
			<scope>test</scope>
		 </dependency>        
	   </dependencies>
    
    
    
    <!-- 추가 작성 시작 -->
		<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>
		<version>${org.springframework-version}</version>
		</dependency>
		
		<dependency>
		<groupId>org.projectlombok</groupId>
		<artifactId>lombok</artifactId>
		<version>1.18.0</version>
		<scope>provided</scope>
		</dependency>
		
	
		
		
		<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.17</version>
		</dependency>
		<!--  추가 작성  끝-->

3.라이브러리에 아래 있는 jar 파일 모두 넣기

3-1 lombok.jar (get, set, toString)

https://projectlombok.org/download

 

 

Download

 

projectlombok.org

 

lombok.jar
1.71MB

 

3-2 5.0.7 버전 lib 모두 라이브러리에 넣기

https://repo.spring.io/release/org/springframework/spring/5.0.7.RELEASE/

 

Index of release/org/springframework/spring/5.0.7.RELEASE

 

repo.spring.io

3-3 결과 화면

 

 

4. class 만들기 (Chef / Restaurant) - org.zerock.sample 안에 생성

Chef.java

package org.zerock.sample;

import org.springframework.stereotype.Component;

import lombok.Data;

@Component
@Data

public class Chef {

}

Restaurant.java

package org.zerock.sample;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import lombok.Data;
import lombok.Setter;


@Component
@Data

public class Restaurant {
@Setter(onMethod_ = @Autowired )
private Chef chef;
}

5.root-context.xml을 클릭 아래 부분 NameSpaces에 들어가 context 체크

<context:component-scan base-package="org.zerock.sample(Chef 및 Restaurant이 위치한 곳)"></context:component-scan> 삽입

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="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">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	<context:component-scan base-package="org.zerock.sample"></context:component-scan>
		
</beans>

6. 테스트 src/test/java 안에 org.zerock.sample을 만들어 SampleTests.java 클래스를 생성한다.

 

package org.zerock.sample;

import static org.junit.Assert.*;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import lombok.Setter;
import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class SampleTests {
   
   
   @Setter(onMethod_ = {@Autowired})
   private Restaurant restaurant;

   @Test
   public void testExist() {
      assertNotNull(restaurant);
      
      log.info(restaurant);
      log.info("----------------------------");
      log.info(restaurant.getChef());
   }

}

@ContextConfiguration("root-context.xml이 위치한 곳")

 

Console 부분과 오른쪽 Spring Explorer 확인 

 

'개발' 카테고리의 다른 글

Mapper & log4jdbc-log4j2 설정  (0) 2020.08.21
Spring JDBC, My batis  (0) 2020.08.20
Spring 비교하기 (xml)  (0) 2020.08.19
Spring Lombok 라이브러리 설치  (0) 2020.08.19
[JSP] 회원제 게시판 구현 1 : 회원 관련 기능  (0) 2020.07.27