관리 메뉴

DeseoDeSeo

[Spring] MVC004 실습 세팅 본문

spring

[Spring] MVC004 실습 세팅

deseodeseo 2023. 9. 21. 18:04

xml파일을 삭제하고 class파일로 대체함.

 

webConfig.java

 

package kr.spring.config;

import javax.servlet.Filter;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

// Web.xml의 기능을 담고 있는 클래스를 상속 받는다
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
	// web.xml을 대체할 java class
	
	
	@Override
	protected Class<?>[] getRootConfigClasses() {
		// DB 설정관련 RootConfig.java 파일을 가져온다
		// 리턴타입은 Class의 배열 형태이다
		// 왜냐하면 나중에 설정파일이 여러개 추가할 수 있기 때문에
		return new Class[] {RootConfig.class};
	}

	@Override
	protected Filter[] getServletFilters() {
		// 인코딩 설정하는 부분
		CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
		encodingFilter.setEncoding("UTF-8");
		encodingFilter.setForceEncoding(true);
		return new Filter[] {encodingFilter};
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		// Servlet 설정 관련 있는 ServletConfig.java 파일을 가져온다
		return new Class[] {ServletConfig.class};
	}

	@Override
	protected String[] getServletMappings() {
		// TODO Auto-generated method stub
		return new String[] {"/"};
	}
	
	
}

 

RootConfig.java
package kr.spring.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.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@MapperScan(basePackages = {"kr.spring.mapper"}) // Mapper Interface 메모리 올리기위해 경로설정
@PropertySource({"classpath:persistence-mysql.properties"})
public class RootConfig {
	// root-context.xml을 대체할 클래스
	
	@Autowired
	Environment env; // 내가 만든 properties 파일을 읽어오는 객체
	
	@Bean // 메모리에 사용할 수 있게 로딩하는 어노테이션
	public DataSource myDataSources() {
		HikariConfig hikariConfig = new HikariConfig();
		hikariConfig.setDriverClassName(env.getProperty("jdbc.driver"));
		hikariConfig.setJdbcUrl(env.getProperty("jdbc.url"));
		hikariConfig.setUsername(env.getProperty("jdbc.user"));
		hikariConfig.setPassword(env.getProperty("jdbc.password"));
		
		HikariDataSource myDataSource = new HikariDataSource(hikariConfig);
		return myDataSource;
	}
	
	@Bean
	public SqlSessionFactory sessionFactory() throws Exception {
		SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
		sessionFactory.setDataSource(myDataSources());
		return (SqlSessionFactory) sessionFactory.getObject();
	}
	
	
}

 

ServletConfig.java
package kr.spring.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;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import lombok.extern.apachecommons.CommonsLog;

@EnableWebMvc // config java 클래스가 Spring mvc 구조상에서 작동하기 위한 어노테이션
@Configuration // WebConfig에서 설정파일로 인식될 수 있게 달아주는 어노테이션
@ComponentScan(basePackages = {"kr.spring.controller"}) // controller 패키지가 여러개일시 추가 해주면된다
public class ServletConfig implements WebMvcConfigurer{ // servlet-context.xml의 기능을 가지고 있는 interface
	// servlet-context.xml을 대체할 클래스
	
	
	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		// servlect-context.xml에 있던 ViewResolver 설정부분
		InternalResourceViewResolver bean = new InternalResourceViewResolver();
		bean.setPrefix("/WEB-INF/views/");
		bean.setSuffix(".jsp");
		registry.viewResolver(bean);
	}

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
	} 
	
}
persistence-mysql.properties
➜ src/main/resources 폴더안. 일반 file로 생성
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/com
jdbc.user=com
jdbc.password=com01