728x90
반응형
[Spring framework] 스프링 MVC 프로젝트 Java로 구성하기
지난 글에서 pom.xml을 설정했던 것 까지는 같습니다. pom.xml을 제외한 xml 파일들을 삭제하고 Java로 Config 파일들을 구성해야 합니다. 먼저 pom.xml을 구성하는 것은 이전 글을 참조합니다.
1. pom.xml 설정 및 라이브러리 설치
https://lifere.tistory.com/128
이전 글을 참조해서 pom.xml을 구성한 다음에 pom.xml에 web.xml을 사용하지 않는 설정만 추가합니다.
pom.xml 내에 <plugins> 내에 다음 내용을 추가합니다.
<!-- web.xml이 없다는 설정 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
2. xml 파일 삭제
xml 파일들을 삭제합니다.
web.xml / root-context.xml / servlet-context.xml
3. Java 설정을 이용하는 경우의 프로젝트 구성
com.project.config 폴더에 web.xml을 대신하는 WebConfig 클래스, root-context.xml를 대신하는 RootConfig 클래스, servlet-context.xml을 대신하는 ServletConfig 클래스를 작성합니다.
RootConfig 클래스
package com.project.config;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@MapperScan(basePackages = {"com.project.mapper"})
public class RootConfig {
@Bean
public DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("net.sf.log4jdbc.sql.jdbcapi.DriverSpy");
hikariConfig.setJdbcUrl("jdbc:log4jdbc:mariadb://{IP}:{PORT}/{DB_NAME}");
hikariConfig.setUsername("{username}");
hikariConfig.setPassword("{password}");
HikariDataSource dataSource = new HikariDataSource(hikariConfig);
return dataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
return (SqlSessionFactory) sqlSessionFactoryBean.getObject();
}
}
ServletConfig 클래스는 아래와 같이 작성됩니다.
package com.project.config;
import org.springframework.context.annotation.ComponentScan;
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;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@EnableWebMvc
@ComponentScan(basePackages = {"com.project.controller"})
public class ServletConfig implements WebMvcConfigurer{
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver bean = new
InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/views/");
bean.setSuffix(".jsp");
registry.viewResolver(bean);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
WebConfig 클래스
package com.project.config;
import javax.servlet.ServletRegistration;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebConfig
extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {ServletConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {
registration.setInitParameter("throwExceptionIfNoHandlerFound", "true");
}
}
4. log4jdbc.log4j2.properties 추가
5. 테스트
테스트 코드를 통해 데이터베이스에 정상 연결이 되는지 확인하고 Tomcat을 통해 실행 가능한지 확인합니다.
<테스트 코드 참조>
https://lifere.tistory.com/135
728x90
반응형
'java, spring' 카테고리의 다른 글
[Spring] 영속 영역의 CRUD 구현 (MyBatis - CRUD) (0) | 2021.06.21 |
---|---|
[Spring] 영속 계층의 CRUD 구현을 위한 환경설정 (0) | 2021.06.19 |
[Spring framework] 데이터베이스 연결 테스트 코드 (0) | 2021.06.17 |
[Spring Framework] SQLSessionFactory (0) | 2021.06.11 |
[Spring framework] 스프링 MVC 프로젝트의 기본 구성 (0) | 2021.06.07 |