Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- react
- TS
- extends
- reactnative error
- 상속
- forwardref type
- javascript
- array
- 타입스크립트
- Filter
- interface
- 슬라이딩윈도우
- app:compiledebugkotlin
- 이진탐색
- map
- Spring
- npm에러
- async
- 배열중복요소제거
- materialicons
- 안드로이드빌드에러
- set
- err_connection_refused
- 스크롤이벤트
- mainapplication.kt
- reactnative
- Next.js
- 리액트네이티브아이콘
- app.post
- generic
Archives
- Today
- Total
rhanziy
스프링 주요 특징 본문
※ 스프링의 주요 특징
1. POJO기반의 구성(Plain Old Java Object)
2. 의존성 주입(DI: Dependency Injection)을 통한 객체간의 관계 구성
: 필요한 객체를 외부에서 밀어 넣는다.
3. AOP(Aspect Oriented Programming: 관점 지향 프로그래밍) 지원
: 횡단 관심사(반드시 필요한 기능)를 모듈로 분리하는 패턴프로그래밍이다.
4.MVC(Model-View-Controller)구조
의존성 주입 테스트
1. 레스토랑: 셰프 객체에 의존적이다. => 셰프 객체를 의존성 주입해야한다.
생성자, setters메서드.
2. 셰프
pom.xml에
// 기존에있는 junit 밑에 test를하기위한 외부객체 DI한당.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
@애너테이션을 이용해서
// 자동으로 외부주입 메서드를 생성 해주는 lombok필요함!, lombok.jar도 폴더에 넣어주기
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
Restaurant 클래스에 정의
package org.zerock.sample;
import org.springframework.beans.factory.annotation.Autowired;-> 자동주입객체
import org.springframework.stereotype.Component;
import lombok.Data;
import lombok.Setter;
@Component // 스프링 코어에서 관리하는 객체임을 지정한다.
*@Data // *Lombok관련 애너테이션(setters메서드, 생성자, toString()등을 자동 생성)
public class Restaurant {
*@Setter(onMethod_ =@Autowired)
private Chef chef;
// Restaurant 객체는 Chef 객체를 필요로 한다.0+
// onMethod_ 속성은 메서드에 추가할 애너테이션을 지정
// @Autowired는 Chef 객체를 chef에 자동으로 주입
}
Chef 클래스에 정의
package org.zerock.sample;
import org.springframework.stereotype.Component;
import lombok.Data;
@Component
@Data
public class Chef {
}
테스트하려면 src/text/java에 main/java와 동일한 패키지를 생성해서
sampleTest.java 클래스 정의.
package org.zerock.sample;
import static org.junit.Assert.assertNotNull;
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 org.zerock.sample.Restaurant;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
>>>>import 오류나면 지우고 다시 import나 buildpath해준다.
@RunWith(SpringJUnit4ClassRunner.class)
// @RunWith는 테스트에 필요한 Runner클래스를 지정
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
// @ContextConfiguration은 스프링 빈을 등록하는 설정파일을 지정
@Log4j // 로그객체 생성(Logger)
// 오류가 발생하면 pom.xml에서 log4j의 <scope>runtime</scope>를 주석 처리 한다.
public class SampleTests {
@Setter(onMethod_ = { @Autowired })
private Restaurant restaurant;
@Test // 단위 테스트의 대상임을 지정, testExist() 실행하여 Junit 테스트 진행
public void testExist() {
assertNotNull(restaurant);
// restaurant변수에 null이아니면 true를 반환한다.
log.info(restaurant);
log.info("----------------------------------");
log.info(restaurant.getChef());
}
}
'Java' 카테고리의 다른 글
JSTL 개념, 문법, 셋팅 (0) | 2023.03.30 |
---|---|
스프링 파일 업로드 관련 (0) | 2022.09.05 |
스프링 pom.xml, dbcp 설정 정리 (0) | 2022.09.05 |
Java언어 특징 정리 (0) | 2022.01.19 |
공통관심사항(cross-cutting concern)과 AOP(Aspect Oriented Programming) (0) | 2022.01.06 |
Comments