-
1130 spring19-mvc-mybatis-junit-javaconfigSpring 2022. 11. 30. 17:04
spring19-mvc-mybatis-junit-javaconfig
// WebAppConfig.java
package org.kosta.myproject.config; import javax.servlet.Filter; import org.springframework.web.filter.CharacterEncodingFilter; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; /* * springmvc project를 java Config 스타일로 설정하기 위한 클래스 * 기존 SprnigMVC의 web.xml 역할을 한다 * -> FrontController인 spring의 DispatcherServlet 설정 , url-pattern 정의 * CharacterEncodingFilter를 이용한 한글처리 설정 */ public class WebAppConfig extends AbstractAnnotationConfigDispatcherServletInitializer{ @Override protected Class<?>[] getRootConfigClasses() { return new Class[] {RootContextConfig.class};// 프로젝트 model 영역 설정 ( dbcp , mybatis , mybatis mapper 등 ) } @Override protected Class<?>[] getServletConfigClasses() { return new Class[] {ServletContextConfig.class};// springmvc web 영역 설정( view 와 controller 설정 ) } @Override protected String[] getServletMappings() { return new String[] {"/"};// DispatcherServlet에 대한 url pattern 지정 } @Override protected Filter[] getServletFilters() { // 인코딩 설정 CharacterEncodingFilter encodingFilter=new CharacterEncodingFilter(); encodingFilter.setEncoding("utf-8"); return new Filter[] {encodingFilter}; } }
WebAppConfig의 역할은 18 프로젝트에서의 web.xml의 역할이다
// RootContextConfig.java
package org.kosta.myproject.config; import javax.sql.DataSource; import org.apache.commons.dbcp2.BasicDataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /* * 기존 springmvc에서 root-context.xml 설정 역할을 하는 클래스 * web을 제외한 service , persistence layer 설정 ( dbcp , mybatis 연동 설정 , MapperScan 설정 ) */ @Configuration @MapperScan(value = "org.kosta.myproject.model.mapper") // MyBatis MapperProxy 를 위한 설정 public class RootContextConfig { @Bean // 메서드에서 반환하는 객체를 스프링 컨테이너에 bean으로 등록하고 관리하게 하는 어노테이션 public DataSource dataSource() { BasicDataSource dataSource=new BasicDataSource(); dataSource.setDriverClassName("oracle.jdbc.OracleDriver"); dataSource.setUrl("jdbc:oracle:thin:@43.200.5.69:1521:xe"); dataSource.setUsername("scott"); dataSource.setPassword("tiger"); return dataSource; } @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception{ SqlSessionFactoryBean sessionFactory=new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); // class 명으로 자동 별칭을 정해주는 옵션 -> 만약 이 설정을 하지 않으면 Mapper.xml의 parameterType 과 // resultType에 모두 resultType="org.kosta.myproject.model.ProductVO" 와 같이 모든 패키지명을 기술해야 한다 sessionFactory.setTypeAliasesPackage("org.kosta.myproject.model.vo"); // db 는 underscore로 합성어를 표현 (product_no) , java 는 camelcase로 합성어를 표현 (productNo) // db의 underscore와 java의 camelcase를 자동 연결하는 설정 org.apache.ibatis.session.Configuration conf=new org.apache.ibatis.session.Configuration(); conf.setMapUnderscoreToCamelCase(true); sessionFactory.setConfiguration(conf); return sessionFactory.getObject(); } // Spring과 MyBatis 연동 // SqlSessionTemplate : AOP 기반 Transaction 을 지원 @Bean public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } }
// ServletContextConfig.java
package org.kosta.myproject.config; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /* * 기존 springmvc 의 servlet-context.xml 설정 역할을 하는 클래스 * web( view 와 conroller ) 관련 설정을 한다 ( controller bean , annotation 기반 springmvc 설정 , viewResolver 설정 , 정적 자원에 대한 설정 ) */ @Configuration @EnableWebMvc // 어노테이션 기반 SpringMVC 컨트롤러 설정( <mvc:annotation-driven/> 설정 역할 ) @ComponentScan("org.kosta.myproject.controller") // bean 생성 등록 관리 public class ServletContextConfig implements WebMvcConfigurer{ @Override public void configureViewResolvers(ViewResolverRegistry registry) { //servlet-context.xml의 viewResolver 설정 WebMvcConfigurer.super.configureViewResolvers(registry); registry.jsp("/WEB-INF/views/", ".jsp"); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { WebMvcConfigurer.super.addResourceHandlers(registry); //<resources mapping="/resources/**" location="/resources/" /> registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } }
둘이 같은 역할을 한다
* 어떤 스타일인지 상관 없이 내용은 동일하다
'Spring' 카테고리의 다른 글
1205 (0) 2022.12.05 1201 springbootsttudy0-jsp (0) 2022.12.01 1130 / spring18-mvc-mybatis-junit-xml.config (0) 2022.11.30 Spring MVC (0) 2022.11.29 1129 spring17-mvc-basic (0) 2022.11.29