Heestory

javaconfig 설정 기본1 본문

개발(~국비)/Spring

javaconfig 설정 기본1

까만밀가루 2022. 7. 19. 17:25

1.springMVCproject 

 

2.spring 폴더, web.xml 삭제 (home.jsp와 homecontroller는 재량)

 

3.pom.xml

<plugin>
<!-- web.xml 없어도 실행되도록 설정 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>

 

maven-war 검색 후 plugin 

버전 관리 후 update maven 

 

4.web.xml 대체 하는 클래스를 만든다. 이 때 패키지명은 아무거나 상관 NO, 아래 최종 web.xml 설정 있음

AbstractAnnotationConfigDispatcherServletInitializer 상속 받는 클래스 -> override method 

{"originWidth":1321,"originHeight":358,"style":"alignCenter","caption":"왼쪽 - web.xml 대체

 

5.servlet-context.xml을 대신하는 클래스 생성  implements WebMvcConfigurer 상속 받음

 

● annotation 대신하는 @EnableWebMvc

 

● <context:component-scan base-package="com.jhta.spring17.controller" /> 대신 @ComponentScan(basePackages = {"com.jhta.spring17.controller"})

 

● <resources mapping="/resources/**" location="/resources/" /> 대신

@Override

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

 

● <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>  대신

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

 

사용

 

 

root-context.xml //DB 설정


 

@Configuration
@ComponentScan(basePackages = {"test.dao"})
@ComponentScan(basePackages = {"test.service"})
public class RootConfig {
@Autowired ApplicationContext applicationContext;
    //dataSource 설정
@Bean(destroyMethod = "close")
public BasicDataSource dataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("oracle.jdbc.OracleDriver");
ds.setUrl("jdbc:oracle:thin:@localhost:1521:xe");
ds.setUsername("c##scott");
ds.setPassword("tiger");
return ds;
}


  //sqlSessionFactory 설정 : sqlSessionFactoryBean.getObject();리턴, 어댑터 제공
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource()); //setter
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath*:data/mybatis/mapper/*.xml"));
SqlSessionFactory factory=sqlSessionFactoryBean.getObject();
return factory;
}

  //sqlSession 설정
@Bean
public SqlSessionTemplate sqlSessionTemplate() throws Exception {
SqlSessionTemplate sTemplate = new SqlSessionTemplate(sqlSessionFactory()); //생성자
return sTemplate;
}

  
//  //dao설정
// @Bean
// public MembersDao membersDao() throws Exception {
// MembersDao dao = new MembersDao();
// dao.setSqlSession(sqlSessionTemplate());
// return dao;
// }
//
// @Bean
// public MembersService service() throws Exception {
// MembersService service = new MembersService();
// service.setDao(membersDao());
// return service;
// }
}


 

 

 

최종 web.xml에는 class명과 함께 제시한다.