java, spring

[Spring framework] 스프링 MVC 프로젝트 Java로 구성하기

isaac.kim 2021. 6. 18.
728x90
반응형

[Spring framework] 스프링 MVC 프로젝트 Java로 구성하기

지난 글에서 pom.xml을 설정했던 것 까지는 같습니다. pom.xml을 제외한 xml 파일들을 삭제하고 Java로 Config 파일들을 구성해야 합니다. 먼저 pom.xml을 구성하는 것은 이전 글을 참조합니다.

 

1. pom.xml 설정 및 라이브러리 설치

https://lifere.tistory.com/128

 

[Spring framework] 스프링 MVC 프로젝트의 기본 구성

[Spring framework] 스프링 MVC 프로젝트의 기본 구성 스프링 MVC를 이용하는 프로젝트의 구성을 이해하는 일은 전체 데이터의 흐름 보고 이해하기 위해서 입니다. 일반적으로 웹 프로젝트는 3-tier(

lifere.tistory.com

이전 글을 참조해서 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

 

[Spring framework] 데이터베이스 연결 테스트 코드

[Spring framework] 데이터베이스 연결 테스트 코드 다음 테스트 코드들을 활용하여 데이터베이스 연결을 테스트합니다. JDBCTests 클래스 package com.project.persistence; import static org.junit.Asser..

lifere.tistory.com

 

 

728x90
반응형