예전 학원에서 배운 Spring Project Setting 방법입니다.
회사에서는 초기 Project Setting을 많이 안하다 보니 점점 잊혀져 가는것 같아 종종 Project Setting 하는 방법을 다시 머리속 으로 정리는 하지만 점점 갈수록 잊혀져 가는 기분이 들기 때문에 낙서장에 글을 남겨봅니다 ㅋㅋㅋㅋ
- 이클립스에서 Spring Legacy Project -> Spring MVC Project 생성한다.
- maven 설정(pom.xml)
- Spring 원하는 버전 설정
- Java 버전 1.8 설정
<!-- 상단 properties tag --> <java-version>1.8</java-version> <!-- 하단 plugin --> <configuration> <source>1.8</source> <target>1.8</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration>
- 빌드, 보고서 관련 인코딩 설정
<!--utf-8로 인코딩 설정 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- 외부 lib 설정
- DB관련
- Commons-dbcp --> hikaricp 변경해도 됨
- MyBatis
- Spring-jdbc
- MyBatis-spring
- Jackson-databind : JSON 관련 라이브러리
- aspectjweaver : AOP 라이브러리
- Tiles
- Tiles-jsp
- Tiles-core
- 그외
- Commons-fileupload, security, poi ...
- DB관련
- web.xml 설정
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <welcome-file-list> <welcome-file>home.do</welcome-file> </welcome-file-list> <!-- Processes application requests --> <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-web.xml,WEB-INF/spring-model.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <filter> <filter-name>encodeFilter</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>encodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
- Spring Config *.xml 설정
<!-- spring ioc 어노테이션 --> <context:component-scan base-package="org.toco.study"></context:component-scan> <!-- spring mvc 어노테이션 --> <mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"></property> <property name="suffix" value=".jsp"></property> <property name="order" value="1"></property> </bean> <!-- Tiles 설정 --> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer" > <property name="definitions"> <list> <value>/WEB-INF/tiles-*.xml</value></list> </property> </bean> <!-- Tiles ViewResolver 설정 --> <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"/> <property name="order" value="0"/> </bean> <!-- DB 설정 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@127.0.0.1:1521:xe</value> </property> <property name="username"> <value>scott</value> </property> <property name="password"> <value>tiger</value> </property> <property name="maxActive"> <value>30</value> </property> </bean> <mybatis-spring:scan base-package="org.toco.study.*.mapper"/> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="typeAliasesPackage" value="org.toco.study" /> <!-- @Mapper 사용 안하고 xml로 파일 찾을 때 --> <property name="mapperLocations" value="classpath:/egov/sqlmap/mapper/**/*.xml" /> <!-- 카멜표기법 변환 --> <property name="configuration"> <bean class="org.apache.ibatis.session.Configuration"> <property name="mapUnderscoreToCamelCase" value="true"/> </bean> </property> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory"></constructor-arg> </bean> <!-- transation 설정 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" /> <!-- Tiles Template 설정 --> <?xml version="1.0" encoding="UTF-8" ?> <!-- 타일즈 설정파일 --> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> <tiles-definitions> <definition name="home.tiles" template="/WEB-INF/views/templates/layout.jsp"> <put-attribute name="title" value="kosta" /> <put-attribute name="header" value="/WEB-INF/views/templates/header.jsp" /> <put-attribute name="footer" value="/WEB-INF/views/templates/footer.jsp" /> <put-attribute name="main" value="/WEB-INF/views/home.jsp" /> </definition> <!-- definition name="*.tiles" : * 는 모든 문자열을 의미 {1} 은 첫번째 * 에 해당하는 문자열을 의미한다 --> <definition name="*.tiles" extends="home.tiles"> <put-attribute name="title" value="{1}" /> <put-attribute name="main" value="/WEB-INF/views/{1}.jsp"/> </definition> <!-- 첫번째 * {1} 디렉토리명 두번째 * {2} 파일명 WEB-INF/views/member/findbyid_form.jsp * * {1} {2} --> <definition name="*/*.tiles" extends="home.tiles"> <put-attribute name="title" value="{2}" /> <put-attribute name="main" value="/WEB-INF/views/{1}/{2}.jsp"/> </definition> <definition name="*/*/*.tiles" extends="home.tiles"> <put-attribute name="title" value="{3}" /> <put-attribute name="main" value="/WEB-INF/views/{1}/{2}/{3}.jsp"/> </definition> </tiles-definitions>
- @Mapper 어노테이션으로 할 경우 java Mapper 경로와 이름이 xml Mapper 똑같이 해야 한다. 그리고 xml Mapper namespace 형태를 Ex) xml Mapper namespace = "org.abc.study.main.mapper.MapperName" 해줘야 됨 spring xml에서 mapper 파일 찾는 방식으로 하면 MapperName만 설정하고 java Mapper 찾아서 가져오는 형태이다.
기본적으로 저는 Spring MVC 프로젝트 Setting 하면 요렇게 하는것 같습니다.
나중에 생각나면 추가로 수정해서 더 올리겠습니다.
'낙서장 > Spring' 카테고리의 다른 글
Spring PDF 파일 ResponseEntity로 보여주기 (0) | 2021.09.23 |
---|---|
Oracle DataBase PDF파일 값 넣기!! (0) | 2021.09.07 |
Spring 다른 서버에 파일 보내기(FTP) (0) | 2021.09.07 |
Spring @Scheduled (0) | 2021.08.12 |
Spring Ajax JSON Encoding (0) | 2021.08.12 |