📚 xml 파일
xml 파일은 모두 Bean(객체)를 정의한다.
📕 pom.xml
java, spring 버전 관리
- default값을 원하는 버전으로 변경해주면 된다.
<properties> <java-version>1.8</java-version> <org.springframework-version>4.2.4.RELEASE</org.springframework-version> <org.aspectj-version>1.8.8</org.aspectj-version> <org.slf4j-version>1.7.14</org.slf4j-version> </properties>
필요한 Library 설치
- maven project에 필요한 Library 들을 MVNrepository 에서 검색해 태그 안에 설치해주면 된다.
<dependencies> <!-- AspectJ :: AOP --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- JSP --> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>${jsp-version}</version> <scope>provided</scope> </dependency> <!-- JSTL --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl-version}</version> </dependency> </dependencies>
📗 web.xml
web.xml은 Servlet 배포 기술로 Tomcat(WAS)에 Dispatcher Servlet 즉, Front Controller에 대한 정보를 제공해주는 역할을 한다.
기본적으로 Root WebApplicationContext와 Servlet WebApplicationContext(DispatcherServlet)에 대한 설정을 포함한다.
Root/Servlet WebApplicationContext의 이름과 경로에 대한 정보를 초함하고 있으며 추가적으로 POST 방식의 한글 처리(encoding)에 대한 filter를 추가할 수 있다.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
📘 servlet-context.xml
웹과 관련된 모든 객체를 정의한다.
default
- Handler Mapping (Controller선택)
// resources 폴더에는 img/css 같은 폴더/파일이 들어 있으므로 Front Controller에게 해당 경로는 제외하고 Mapping을 시도하라고 알려줘야 함 <resources mapping="/resources/**" location="/resources/" />
- ViewResolver
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <beans:property name="prefix" value="/WEB-INF/views/" /> <beans:property name="suffix" value=".jsp" /> </beans:bean>
추가 작성
- MultipartResolver
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
- Annotation(@) scan
// base-package에 설정된 package내의 class 중 @controller (annotation)이 적용된 class는 자동 스캔의 대상이 됨 <context:component-scan base-package="com.test.board.controller" />
📙 root-context.xml
웹과 관련되지 않은 비웹 관련 객체를 정의한다.(Service, DAO(Repository), ..)
- Annotation(@) scan
// base-package에 설정된 package내의 class 중 @Service, @Repository, @Component (annotation)이 적용된 class는 자동 스캔의 대상이 됨 <context:component-scan base-package="com.ssafy.board.model" />
- 기존 DAO에서 Connection 부분을 대체하는 객체
<bean id="conn" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/DB명?characterEncoding=UTF_8&serverTimezone=UTC" /> <property name="username" value="설정한username" /> <property name="password" value="설정한password" /> </bean>
- Mybatis의 Config.xml 파일을 대체하는 객체
<bean id="myBatis" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="conn" /> <property name="typeAliasesPackage" value="com.test.board.model.dto" /> <!-- Mapper에서 쓰는 짧은 클래스 명 --> <property name="mapperLocations" value="classpath:/**/dao/*Mapper.xml" /> <!-- SQL 명령어가 들어있는 위치 --> </bean>
- BoardMapper Interface를 DAO 객체로 생성해주는 proxy관리자
// @Mapper: 클래스가 아니라 인터페이스에 붙이는 어노테이션, 생략해도 실행 됨 <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.test.board.model.dao" /> </bean>
- AOP를 이용해 트랜잭션(ACID)을 적용하기 위한 tx 네임스페이스
// AOP에서 pointcut 잡고 before, after 등등 작업하던거 그냥 애노테이션 처리 가능하도록 해주는 프록시 // Service 또는 DAO에서 생성 및 트랜잭션이 필요한 곳에 @Transactional (annotation)을 추가 <tx:annotation-driven transaction-manager="transactionManager"/>
// insert, update, delete같은 것들 두개 이상 묶어서 처리할 때 사용 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="conn"></property> </bean>
'Back-End > Spring' 카테고리의 다른 글
[Spring] 스프링 특징 IOC, AOP, DI 이란? (0) | 2023.12.14 |
---|---|
[Spring] Spring MVC (0) | 2023.04.30 |
[Spring] AOP (Aspect Oriented Programming) (0) | 2023.04.28 |
[Spring] DI (Dependency Injection) (0) | 2023.04.26 |
[Spring] Spring Framework란? (0) | 2023.04.25 |