minlog
article thumbnail

 

xml  >  java 기반의 환경설정

 

1. web.xml  >  webConfig.java

📑 pom.xml

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

1) web.xml 삭제시 pom.xml에 web.xml 을 사용하지 않겠다고 선언해주어야한다.

 

 

📑 webConfig.java

@Override
protected Class<?>[] getRootConfigClasses() {
    // root-context.xml을 대신할 자바파일 연결
    return return new Class[] {RootConfig.class};;
}
@Override
protected Class<?>[] getServletConfigClasses() {
    //servlet-context.xml 을 대신할 자바파일 연결
    return return new Class[] {ServletConfig.class};;
}
@Override
protected String[] getServletMappings() {
	// mapping되는 부분 루트 
	return new Sting[]{"/"};
}

2) web.xml을 대체하는 AbstractAnnotationConfigDispatcherServletInitializer 클래스를 상속 받은 자바파일 생성

- 각 기능을 하는 xml을 제거하고 대채 하는 자바 파일들을 생성한 뒤 webConfig.java의 메서드에 return 해준다. 

 

 

@Override
protected Filter[] getServletFilters() {
    CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
    encodingFilter.setEncoding("UTF-8");
    encodingFilter.setForceEncoding(true);
    return new Filter[]{encodingFilter};

}

3) 언어 설정 추가 

 

 

2. servlet-context.xml  >  ServletConfig.java

뷰 리졸버 설정 및 리소스 폴더 어디 경로와 연동되는가, 어노테이션 사용 설정을 하던 xml 이다. 

 

📑 ServletConfig.java

package kr.board.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;

//servlet-context.xml 
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"kr.board.controller"})
public class ServletConfig implements WebMvcConfigurer{

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
	}

	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		InternalResourceViewResolver bean=new InternalResourceViewResolver();
		bean.setPrefix("/WEB-INF/views/");
		bean.setSuffix(".jsp");
		registry.viewResolver(bean);
	}
	
}

 

1) 환경설정을 위한 파일이라고 어노테이션 추가 (생략가능)

@Configuration

 

2) 웹을 설정 하기 위한 파일이라고 인식 하기 위해 어노테이션 추가 

@EnableWebMvc

 

 

3) 사용하는 패키지 추가 

@ComponentScan(basePackages = {"kr.board.controller", "사용하는 패키지", ...})

 

 

4) WebMvcConfigurer를 받아서 메소드를 오버라이딩하여 사용한다.

implements  WebMvcConfigurer를 implements 로 받아서 사용 

 

 

 

 

 

 

 

 

 

3. root-context.xml  >  RootConfig.java

DB연결 설정을 해준다. 

package kr.board.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;

//root-con
@Configuration
@MapperScan(basePackages = {"kr.board.mapper"})
@PropertySource({ "classpath:persistence-mysql.properties"})
public class RootConfig {
	@Autowired
	private Environment env;
	@Bean
	public DataSource myDataSource() {
		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(myDataSource());
		return (SqlSessionFactory)sessionFactory.getObject();
	}
	
}

1) 환경설정을 위한 파일이라고 어노테이션 추가 (생략가능)

@Configuration

 

2) 메퍼를 사용하는 패키지 설정
@MapperScan(basePackages = {"kr.board.mapper","패키지",...})

 

3) src/main/resource 에 설정한 내용을 가져온다.

@PropertySource({ "classpath:persistence-mysql.properties"})

 

📑 persistence-mysql.properties

# persistence-mysql.properties
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/com?serverTimezone=UTC
jdbc.user=com
jdbc.password=com01

 

 

 

 

- persistence-mysql.properties 파일에 설정을 된 내용을 사용하려면 Environment 가 필요하다.

@Autowired
private Environment env;

 

4) 스프링 컨테이너에 자동으로 생성되려면 @Bean 선언 필요

커넥션 풀을 사용하기위한 

- DataSource : hikariConfig 연결 DB 커넥션 풀 생성

- SqlSessionFactoryBean : 개발자가 설정한 DB와 연결

 

 

profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!