-SKplanet Tacademy의 스프링 프레임워크 강의를 듣고 정리한 내용입니다-
@Test
- @Test가 선언된 메서드는 테스트를 수행하는 메서드가 된다.
- Junit은 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행됨을 원칙으로 하므로 @Test 마다 객체를 생성한다.
@Ignore
- @Ignore가 선언된 메서드는 테스트를 실행하지 않게 한다.
@Before
- @Before 가 선언된 메서드는 @Test 메소드가 실행되기 전에 반드시 실행되어진다.
-@Test 메소드에서 공통적으로 사용하는 코드를 @Before 메소드에 선언하여 사용하면 된다.
@After
- @After 가 선언된 메소드는 @Test 가 선언된 메서드 실행된 후에 실행된다.
@BeforeClass
- @Test 메소드보다 먼저 한 번만 수행되어야 할 경우 사용
@AfterClass
- @Test 메소드보다 나중에 한 번만 수행되어야 할 경우 사용
<Spring-Test에서 테스트를 지원하는 어노테이션>
@RunWith(SpringJUnitClassRunner.class)
-테스트 실행방법 확장할 때 사용
-클래스를 지정해주면 junit이 테스트를 진행하는 중에 ApplicationContext를 만들고 관리하는 작업을 진행해준다.
-각각의 테스트 별로 객체가 생성되더라도 싱글톤의 ApplicationContext를 보장
@ContextConfiguration
- 스프링 빈(Bean) 설정 파일의 위치를 지정할 때 사용되는 어노테이션이다.
@Autowired
- 스프링 DI에서 사용되는 특별한 어노테이션
- 해당 변수에 자동으로 빈을 매핑 해준다.
- 스프링 빈(Bean) 설정 파일을 읽기 위해 GenericXmlApplicationContext를 사용할 필요가 없다.
Setter Injection : <property> 태그
- setter 메서드를 통해 의존관계가 있는 Bean을 주입하려면 <property> 태그를 사용
- ref 속성은 Bean 이름을 이용해 주입할 Bean을 찾는다.
- value 속성은 단순 값 또는 Bean이 아닌 객체를 주입할 때 사용한다.
Constructor Injection : <constructor-arg> 태그
- Constructor를 통해 의존관계가 있는 Bean을 주입하려면 <constructor-arg> 태그를 사용할 수 있다.
- Constructor 주입방식은 생성자의 파라미터를 이용하기 때문에 한 번에 여러 개의 객체를 주입할 수 있다.
환경에 따라 자주 변경되는 내용의 분리 예시
- value 속성에 설정된 값들은 환경에 따라 변경될 수 있는 내용이다.
- 자주 변경되는 값들은 properties 파일에 넣어 분리하는 것이 좋다.
- 프로퍼티 파일로 분리한 정보는 ${} 프로퍼티 치환자를 이용하여 설정한다.
- ${} 값을 치환해주는 기능은 <context:property-placeholder> 태그에 의해 자동으로 등록되는 PropertyPlaceHolderConfigurer Bean이 담당한다.
<Bean 등록 메타정보 구성 전략>
XML 단독 사용(운영 중 사용 장점)
- 운영 중에는 XML을 사용하고(모든 빈들 간의 의존관계를 한 눈에 볼 수 있기 때문에), 개발 중에는 어노테이션을 이용하는 것이 좋다.
XML과 빈 스캐닝의 혼용(개발 중 사용 장점)
- Bean으로 사용될 클래스에 어노테이션을 부여해주면 이런 클래스를 자동으로 찾아서 Bean으로 등록한다.
Bean 등록 및 의존관계 설정 어노테이션
- @Component : 컴포넌트를 나타내는 일반적인 스테레오 타입, <bean> 태그와 동일한 역할
- @Repository : 퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스
- @Service : 서비스 레이어, 비즈니스 로직을 가진 클래스
- @Controller : 프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스
Bean 의존관계 주입 어노테이션
@Autowired
- 정밀한 의존관계 주입(DI)이 필요한 경우 유용
- 프로퍼티, setter 메서드, 생성자, 일반메서드에 적용 가능하다.
@Resource
- @Autowired 와 기능 비슷한데 적용 가능한 곳이 제한적임
- @Autowired는 타입으로, @Resource는 이름으로 연결한다.
@Value
- 단순한 값을 주입할 때 사용
@Qualifier
- @Autowired 어노테이션과 같이 사용된다.
- @Autowired는 타입을 찾아서 주입하므로, 동일한 타입의 Bean 객체가 여러 개 존재할 때 특정 Bean을 찾기 위해서는 @Qualifier 같이 사용
'웹 > Spring' 카테고리의 다른 글
[Spring]Spring Framework Basic Framework 개념_REST | T아카데미 (0) | 2021.05.29 |
---|---|
[Spring]Spring Framework Basic Framework 개념_아키텍처, JDBC | T아카데미 (0) | 2021.05.25 |
[Spring]JUnit_java.lang.Exception: No runnable methods (0) | 2021.05.18 |
[Spring]Spring Framework Basic Framework 개념_IoC, DI | T아카데미 (0) | 2021.05.18 |
[Spring]Spring Framework Basic Framework 개념 | T아카데미 (0) | 2021.05.18 |