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

우선, Spring이 실행되는 순서는 전 "Spring framework 01) spring 전반적인 구조 파악하기" 에서 설명되었으니 그 글을 참고하기를 !
1. maven을 활용란 라이브러리 등록 (pom.xml 파일 이해 )
우선 스프링에서는 라이브러리를 사용하기 위하여 maven을 이용한다. maven이란, 프로젝트 전체적인 라이프 사이클을 관리하는 도구로써, 라이브러리 관리(의존성 주입)의 역할을 한다고 생각하면 된다.

우선, 라이브러리의 등록은 프로젝트 폴더들 하단의 pom.xml 파일에서 진행된다. 들어가보면 <dependencies>라는 태그 밑으로 쭈르륵 라이브러리들이 등록되어있는 것을 볼 수 있다. 참고로 라이브러리는
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 태그를 이용하여 별칭을 정해줄 수 있다.