웹/Spring

[Spring]Spring Framework Basic Framework 개념_어노테이션 | T아카데미

Ellie67 2021. 5. 25. 00:11

-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 같이 사용