생각보다 환경구성이 길었습니다.. 프레임워크를 가져다 쓰는건 어렵군요.
[의존성 주입 테스트]
1. 의존성 주입 테스트를 위해서는 pom.xml 을 변경하여야 하는데, 해당 내용은 전 게시글에 첨부파일에 포함되어 있습니다.
추가해야 하는 pom
<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>
수정해야 하는 pom
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version><!-- 기존에 있던 4.7에서 변경 -->
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version><!-- 기존에 있던 1.2.15는 comment 처리 -->
</dependency
2. Chef.java 클래스를 생성합니다.
org.zerock.sample.Chef.java
3. Restaurant.java 클래스를 생성합니다.
org.zerock.sample.Restaurant.java
1) 어노테이션의 기능들은 해당 주석을 참고하세요. 이 어노테이션들을 사용하기 위해
환경설정 고생한 거 같습니다..
4. XML 을 이용하는 의존성 주입 설정을 합니다.
1) 스프링에서 관리되는 객체 : 빈(Bean)
2) 설정 : XML 과 자바를 이용하는 방법
3) default : XML 을 이용해서 의존성 주입
4) root-context.xml : 빈을 설정하는 설정 파일
root-context.xml 에 해당 밑줄내용을 입력하세요.
<context:component-scan base-package="org.zerock.sample"></context:component-scan>
5. root-context.xml 밑을 보시면 Namespaces 에서 context 를 체크하시고 Beans Graph에서 해당 그림처럼 나오는지 확인하십시오.
root-context.xml Namespaces, Beans Graph
이제 테스트 코드를 통해서 의존성 주입을 확인하는 시간입니다.
[스프링이 동작하면서 생기는 일]
1. src/test/java 밑에 org.zerock.sample.SampleTests.java 클래스를 생성한 뒤 아래 내용을 입력하세요
org.zerock.sample.SampleTests.java
1) 각 문구에 대한 해석은 주석에 있습니다.
2) 콘솔을 보시면 정상적으로 테스트가 실행되어 Chef 객체가 restaurant 객체에 주입되었음을
확인할 수 있습니다.)
3) 즉, 객체를 생성한 적이 없는데 객체가 만들어졌다는 점을 보아 Restaurant 클래스의 @Data 어노테이션이
Lombok을 이용해서 여러 메소드를 만들어, Restaurant 객체의 Chef 인스턴스 변수에 Chef 객체가
주입되었음을 확인할 수 있는겁니다.
JDK8부터 onMethod_ 이렇게 쓴다는 얘기입니다.
2. Lombok 관련
1) 컴파일 시 흔하게 코드를 작성하는 기능들을 완성해주는 라이브러리
2) @Setter : setter 메소드를 만들어주는 역할
3) @Data
(1) @ToStrign, @EqualsAndHashCode, @Getter/@Setter,@RequiredArgsConstructor를 모두
결합한 상태
4) @Log4j : 로그 객체를 생성
3. Spring 관련
1) @Component : 해당 클래스가 스프링에서 객체로 만들어서 관리하는 대상임을 명시하는 어노테이션
2) @Autowired : 스프링 내부에서 자신이 특정한 객체에 의존적이므로 자신에게 해당 타입의 빈을
주입해주라는 표시
4. 테스트 관련
1) @ComponentConfiguration
(1) 스프링이 실행되면서 어떤 설정 정보를 읽어들여야 하는지를 명시
(2) 속성
ㄱ ) locations : 문자열의 배열로 XML 설정 파일을 명시
ㄴ) classes : @Configuration 이 적용된 클래스를 지정
2) @RunWith : 테스트 시 필요한 클래스를 지정
3) @Test : JUnit 에서 해당 메서드가 JUnit 상에서 단위 테스트의 대상인지를 알려줌
[스프링 4.3이후 단일 생성자의 묵시적 자동 주입]
1. 생성자 주입
1) 생성자를 통해서 처리
2) 기존에는 @Inject 나 @Autowired, @Resource 등을 이용해서 주입에 대한 정보를 어노테이션으로 설정
3) 스프링 4.3이후에는 단일 파라미터를 이용하는 생성자에 한해서 특정 타입의 객체를 자동으로 주입 가능
단일 파라미터이므로 @Autowired가 없습니다.
4) @AllArgsConstructor 어노테이션으로 클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성가능합니다.
lombok 기능정리 (2) - @Getter/@Setter , @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
@Getter/@Setter 필드에 @Getter나 @Setter를 붙인다면, lombok이 해당 필드에 대한 기본 getter/setter를 생성해줍니다. 기본적인 getter란 단순히 필드를 리턴하는 것을 말하며, 필드 이름이 foo라면 메소드 이..
dingue.tistory.com
'컴퓨터학원(복습)(수료)' 카테고리의 다른 글
자바(JAVA)기반 안드로이드 웹&앱 개발 70일차 ( Model 데이터전달자, RedirectAttributes, Controller, ResponseEntity, 파일업로) (0) | 2021.06.08 |
---|---|
자바(JAVA)기반 안드로이드 웹&앱 개발 69일차 (MySQL DB 연동, MyBatis 연동, 스프링 MVC 기본구조, ) (0) | 2021.06.07 |
자바(JAVA)기반 안드로이드 웹&앱 개발 68일차 (JAVA SPRING 시작) (0) | 2021.06.04 |
자바(JAVA)기반 안드로이드 웹&앱 개발 67일차 (평가 2일차) (0) | 2021.06.03 |
자바(JAVA)기반 안드로이드 웹&앱 개발 66일차 (평가 1일차) (0) | 2021.06.02 |