글쓰기

개인 공부 상자/참고 자료

applicationContext와 태그 정리

RSpring41 2021. 10. 5. 15:53

1. 스프링 애플리케이션 전반에 걸쳐 모든 구성요소의 제어 작업을 담당한다.

2. 스프링에서 기본적으로 별다른 설정을 하지 않으면 내부에 생성하는 빈 오브젝트는 모두 싱글톤으로 생성된다.

 

스프링 공식 문서에 보면 스프링 2.5버전 이상부터 stereotype 애노테이션인 @Component, @Service, @Controller, @Repository를 사용할 수 있으며, 이런 Annotation을 통해 해당 클래스에 역활을 알 수 있다.

# stereotype : 고정된 일반적인 패턴

 

#싱글톤 이란?

 

보통 클래스를 생성하기 위해서는 new를 사용하여 생성하여야 한다. 이렇게 되면 사용할 때마다 매번 새로운 객체가 생성되고 되고 메모리 낭비, 코드 오류 등에 문제가 발생하게 된다. 이와 반대로 처음 생성할 때 만들었던 객체를 이후에 계속 리턴하여 사용하는 것이 싱글톤이다.

(또한 싱글톤으로 만들어진 클래스는 전역 인스턴스이기 때문에 다른 클래스의 인스턴스에서 접근이 가능하다.)

 

 

 

<context:property-placeholder> : 외부  설정 properties를 사용

 

<context:annotation-config /> : 이미 등록된 bean에 대해서만 Annotation을 활성화 한다.

어디선가 bean을 등록해놓으면 @Autowired와 @Qualifier Annotation을 검색한다.

검색 종류 : @Autowired와 @Qualifier

따라서 위 태그를 사용하더라도 xml에 bean을 반드시 선언해야 한다.

 

<context : component-scan /> :  bean에 등록 여부와 상관 없이 자동으로 bean을 스캔해서 Annotaton을 검색한다.

검색 종류 : @Autowired와 @Qualifier, @Service, @Component, @Controller, @Repository 등

모든 클래스를 검사하고 bean을 생성하기 때문에 이 태그를 사용하면 위 태그는 사용할 필요가 없다.

다만 이 경우 base-package를 통해 스프링이 스캔할 패키지 위치를 지정해두는 것이 일반적이다.

더보기

<context:exclude-filter expression="패키지 경로" type="annotation" />

component-scan 태그에 따라서 자동으로 스캔되는 Annotation중 @Controller를 스캔대상에서 제외

 

<context:include-filter expression="패키지 경로" type="annotation" /> 

component-scan 태그에 따라서 자동으로 스캔되는 Annotation중 @Controller를 스캔대상에서 포함 

 

보통 @Contronller만 검색 한다고 하면 base-package에서 use-default-filters="false" 속성을 추가하여 모든 Annotation을 검색에서 제외하고 <context:include-filter expression="패키지 경로" type="annotation" /> 를 사용하여 Controller만 검색하도록 사용한다.

 

<context : component-scan base-package="패키지 경로"/> : 스프링이 스캔할 패키지 위치를 지정

<context : component-scan /> 와 같이 사용되는게 보통이다.

더보기

use-default-filters="false" 속성을 추가하여 모든 Annotation을 검색 제외

 

 

<tx:advice /> : 선언적 트랜잭션

 

 

<tx:Annotation-driven /> : 명시적 Annotaion지정 방법. 

최근 더 많이 사용된다.

클래스와 메소드, 인터페이스에 @Transactional 애노테이션을 사용할 수 있다.

transaction begin, commit을 자동으로 처리하고, 예외를 발생하면 rollback 처리한다.

Annotation이 선언되면 트랜잭션 기능이 포함된 프록시 객체가 생성되어 자동으로 commit 혹은 rollback을 진행해준다.

(정확하게 이해하지 못해서 다음에 수정 예정)

 

 



 

'개인 공부 상자 > 참고 자료' 카테고리의 다른 글

이름.properties란?  (0) 2021.10.06
Security.xml와 태그 정리  (0) 2021.10.05
Spring내부 Tomcat과 외부 Tomcat차이  (0) 2021.10.03
DispatcherServlet란  (0) 2021.10.02
web.xml이란  (0) 2021.10.02