back-end/Spring framework

Spring 02) Spring의 구조이해 및 설정

HAyooni 2022. 6. 22. 00:04

 우선, Spring이 실행되는 순서는 전 "Spring framework 01) spring 전반적인 구조 파악하기" 에서 설명되었으니 그 글을 참고하기를 ! 

 

 

1. maven을 활용란 라이브러리 등록 (pom.xml 파일 이해 )

 

우선 스프링에서는 라이브러리를 사용하기 위하여 maven을 이용한다. maven이란,  프로젝트 전체적인 라이프 사이클을 관리하는 도구로써, 라이브러리 관리(의존성 주입)의 역할을 한다고 생각하면 된다.

스프링 프레임워크의 프로젝트 구조를 살펴보면 Maven Dependencies라는 폴더가 있다. 열어보면 실제 사용하기 위해 등록했던 라이브러리들이 등록되어있는 것을 볼 수 있다. 우리는 홈페이지 구현의 여러가지를 실행하기 위하여 라이브러리 등록이 꼭 필요하다.
Maven Dependencies

 

  

 우선, 라이브러리의 등록은 프로젝트 폴더들 하단의 pom.xml 파일에서 진행된다. 들어가보면 <dependencies>라는 태그 밑으로 쭈르륵 라이브러리들이 등록되어있는 것을 볼 수 있다.  참고로 라이브러리는

https://mvnrepository.com/

 

Maven Repository: Search/Browse/Explore

Intuitive Event-Driven Reactive Programming Library for Java Last Release on Jun 20, 2022

mvnrepository.com

이곳에 들어가서 원하는 라이브러리를 검색, 클릭 한번으로 코드를 복사해서 pom.xml에 붙여넣기만하면 끝난다.

 

2. Bean(객체)를 관리하는 root-context.xml

 

root-context.xml 파일은 DAO, VO, Service 등을 어떻게 사용할 것인지 여러가지 객체를 설정하는 파일이다.

 

  • DataSource는 서버에서 관리하는 리소스인 커넥션 풀을 사용할 수 있게 하는 객체
  • SqlSessionTemplate 은 SqlSession 을 구현하고 코드에서 SqlSession 를 대체하는 역할
  • transactionManager 은 트랜잭션처리
  • multipartResolver 파일업로드에 사용되는 인터페이스 

 

 

3. 배포설명자 web.xml 

배포 설명자라고도하며 우리는 이 파일을 Servlet-Jsp 구조를 처음배울 때 사용하였다. url의 경로와 해당 경로의 요청을 처리하는 서블릿의 매핑을 정의하는 역할을 한다.

 controller에서 view로 데이터를 넘길 때 return값에 일일이 모든 주소를 쓰지 않고 동일한 url 부분마다 서블릿을 매핑하여 간단한 사용이 가능하다.

 

예) member관련 url이 모두 *.me로 끝나는 경우 

	<!-- 회원관련 -->
	<servlet>
		<servlet-name>memberServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>
			/WEB-INF/spring/appServlet/member-context.xml
			/WEB-INF/spring/aspect-context.xml
			</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>memberServlet</servlet-name>
		<url-pattern>*.me</url-pattern>
	</servlet-mapping>

 

 

4. SQL 문을 저장하고 매핑하는 역할 mappers/ mapper.xml

 

 SQL 문을 저장하고 매핑하는 역할을하는 mapper.xml 파일이다. 기존의 DAO를 사용했던 시절,, PreparedStatement와 ReusltSet,, 자원반납,,예외처리,, 쿼리작성 등 여러가지할게 많았었는데 스프링에서는 mapper.xml 파일하나로 간단한 SQL문 처리가 가능하다.

 

 select / insert / update 태그를 사용하여 손쉽게 SQL 구문을 작성할 수 있다.

 resultMap 속성을 이용하여 데이터가 담길 ResultSet을 작성할 수 있다. (column="실제 DB컬럼명" / property= "vo에 정의한 변수명")

 <resultMap > 태그에는 type과 id 속성이 있다. type="해당 vo의 위치" id="resultMap의 아이디

 

** 해당 vo의 위치는 mybatis-config.xml 파일을 이용하여 간단히 작성가능하니 다음 항목 참조 ! 

 

5. mybatis-config.xml

 

 MyBatis 설정파일(SqlMapConfig.xml) : 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정한다.

<configuration>
	
	<settings>
		<setting name="jdbcTypeForNull" value="NULL"/>
	</settings>

	<typeAliases>
		<typeAlias type="com.kh.spring.member.model.vo.Member" alias="Member"/>
		<typeAlias type="com.kh.spring.board.model.vo.Board" alias="Board"/>
		<typeAlias type="com.kh.spring.board.model.vo.Reply" alias="Reply"/>
	</typeAliases>
	<mappers>
		<mapper resource="mappers/member-mapper.xml"/>
		<mapper resource="mappers/board-mapper.xml"/>
	</mappers>
</configuration>

<configuration> 태그 안에 typeAliases와 mappers 태그를 이용하여 별칭을 정해줄 수 있다.