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와 연결
'BackEnd > Spring Boot' 카테고리의 다른 글
[ Spring ] Security - java (2) 비밀번호 암호화하기 (0) | 2023.03.05 |
---|---|
[ Spring ] Security - java (1) 기반의 보안 환경설정과 사용방법 (0) | 2023.03.05 |
[ String ] 파일 업로드 기능 Api ( cos.jar ) (0) | 2023.03.04 |
[ Spring ] 회원정보수정 (0) | 2023.03.03 |
[ Spring ] 로그인 / 로그아웃 처리 (0) | 2023.03.02 |