[Spring] XML로 프로젝트 구성하기

kihongsi·2024년 3월 12일
0

spring

목록 보기
6/7

Spring 프레임워크를 사용하면서 XML 파일을 통해 빈을 와이어링 하거나 값 주입 등 프로젝트를 설정할 수 있다.

pom.xml

메이븐 설정. 메이븐이 pom.xml에 명시된 dependency를 다운받아 프로젝트 라이브러리에 추가해줌

web.xml

웹 어플리케이션은 반드시 하나의 web.xml 파일을 가져야 함(WEB-INF 폴더 내)
파일에 작성되는 내용은 다음과 같다.

  • ServletContext 초기 변수
  • 서블릿 및 jsp에 대한 정의, 맵핑
  • MimeType 매핑
  • Session 유효시간
  • welcome file list
  • 오류 핸들러

Servlet

자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 (자바)프로그램 혹은 그 사양
주로 서비스 처리를 위한 데이터 준비 작업과 메소드 호출 역할

web.xml 파일에서 설정하기
<servlet>: 설정하려는 서블릿 등록. 하위에 <servlet-name>, <servlet-class> 필수
<load-on-startup>: 클라이언트 요청이 없더라도 웹 서비스 구동시 서블릿 객체 생성 및 대기, 태그 안 숫자로 우선순위 설정(낮을수록 우선순위 높음)
<servlet-mapping>: <servlet-name>에서 지정한 이름의 서블릿을 브라우저에서 요청된 논리적인 서블릿으로 매핑
<url-pattern>: 클라이언트가 요청하는 논리적인 서블릿 이름 패턴
<display-name>: external name of the servlet(servlet-name은 다른 태그에서 refer할 때 사용하므로 internal name이라고 보면 됨)


(서블릿) 파라미터

1) init-param: 서블릿(또는 상위 태그 서비스)에 변수를 전달할 때 사용. 지정한 서블릿 내에서만 사용 가능한 값(서블릿 태그 안)
2) context-param: 전역에서 사용 가능한 파라미터 값(독립된 위치)


Filter

HTTP 요청과 응답을 변경하기 위한, 재사용 가능한 코드(객체 형태로 존재)
e.g. 인증, 권한 체크

request --> filter --> 최종자원(Servlet, JSP 등)
최종자원 --> filter --> response

web.xml 파일에서 설정하기
<filter>: 사용할 필터 설정
<filter-mapping>: 특정 자원에 대해 필터를 매핑(e.g. url-pattern을 지정하여 해당하는 파일에 필터 적용)


Listener

특정 이벤트가 발생하면 지정된 로직을 실행하도록 함(이벤트 핸들링)

web.xml 파일에서 설정하기
<listener>: 리스너 등록
<listener-class> 리스너 하위 태그(반드시 하나 지정). 구현한 리스너 클래스를 패키지명 포함하여 지정


component-scan으로 빈 등록하기

<component-scan>: @Container, @Service, @Component 등 어노테이션을 붙인 클래스들을 스캔하여 빈으로 등록해주는 것

<context:component-scan base-package="com.rcod.lifelog, com.rcod.example"/>
base-package 하위의 anotated 클래스들이 모두 빈으로 등록됨

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
exclude-filter 사용 시 해당 어노테이션을 제외

<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
기본값을 false로 주고 include-filter 사용해 특정 어노테이션만 스캔 가능


aop 설정

<aop:config>
		<!-- 공통 로직 적용할 시점(메소드) 정의 -->
		<aop:pointcut id="test" 
                      expression="execution(* iutf.aop.sample.*(..))"/>
        
        <aop:aspect ref="common">
			<!-- Advice 작성 구간 -->
        </aop:aspect>
        
	</aop:config>

<aop:pointcut>: aop 포인트컷 정의, advice가 적용될 지점을 id로 참조할 수 있도록
<aop:aspect>: Advice 작성 구간(ref로 AOP Bean 호출)


프로퍼티 등록

<util:properties id="프로퍼티 ID" location="프로퍼티 경로 + 프로퍼티 파일명" />
위와 같이 xml 파일에 프로퍼티 등록 해놓고 다른 xml 파일 내에서
<property name="프로퍼티명" value="#{propetie id['프로퍼티 내의 변수명']}" />
이렇게 사용 가능
Java파일 내에서도 사용 가능(@Value 어노테이션)

0개의 댓글