본문 바로가기
Spring

Spring - Part1-1 스프링 개발 환경 구축 (개발환경설정)

by IronAreum 2022. 1. 10.
728x90

코드로 배우는 스프링 웹 프로젝트[개정판] https://cafe.naver.com/gugucoding

1. 개발환경설정

 

 

  • 기본설정 @eclipse
//UTF-8 설정 Window > Preferences > General > Workspace => Text file encoding 'UTF-8'으로 변경 Window > Preferences > Web => HTML, CSS, JSP Create files 'UTF-8'으로 변경

//STS 설정  
Help > Install New Software.. > Name & Location 경로는 찾아보기.

//Tomcat 설정  
Tomcat 다운로드 및 설치

//스프링 프로젝트 생성  
Spring Legacy Project > Spring MVC Project 생성  
//프로젝트 생성시 에러나면 .m2 > repository 폴더 삭제 후 이클립스 재시작
  • 스프링 구조
ex00/
│   Deployment Descriptor. ex00
│   Spring Elements
│   JAX-WS Web Services
└── Java Resource/
│   │   src/main/java       => 작성되는 코드의 경로
│   │   src/main/resource   => 실행할 때 참고하는 기본 경로(주로 설정파일)
│   │   src/test/java       => 테스트 코드 넣는 경로
│   │   src/test/resource   => 테스트 관련 설정파일 보관 경로
│   └── Libraries 
│   JavaScript Resources
│   Deployed Resources
└── src/
│   └── main/
│   │   │   java
│   │   │   resources
│   │   └── webapp 
│   │       │   resources
│   │       └── WEB-INF 
│   │           │   clases
│   │           │   spring
│   │           │   │   appServlet
│   │           │   │   └── servlet-context.xml   => 웹과 관련된 스프링 설정 파일
│   │           │   └── root-context.xml          => 스프링 설정 파일
│   │           │   views                         => 템플릿 프로젝트의 jsp 파일 경로
│   │           │   └── home.jsp
│   │           └── web.xml                       => tomcat의 web.xml 파일
│   └── test
└── target 
    └── pom.xml                                   => Maven이 사용하는 pom.xml
  • Configuration: 2 versions(xml/java) 버전 변경 및 설정 추가
//pom.xml
// 스프링 프레임워크 버전은 3.1.1로 생성되므로 예제는 5.0.7 버전으로 수정
// pom.xml 변경 이후 Maven > Update Projecct & Maven Dependencies 항목 변경되었는지 체크
<name>ex00</name>
   <packaging>war</packaging>
   <version>1.0.0-BUILD-SNAPSHOT</version>
   <properties>
       <java-version>1.6</java-version>
       <org.springframework-version>5.0.7.RELEASE</org.springframework-version>
       <org.aspectj-version>1.6.10</org.aspectj-version>
       <org.slf4j-version>1.6.6</org.slf4j-version>
   </properties>

  • java Configuration의 경우
<!-- web.xml/spring폴더(root-context.xml,servlet-context.xml) 삭제-->
<!-- java Config 사용시 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.8
    5.0.7.RELEASE


  • RootConfig 클래스 (Part5 포함 버전)
@Configuration
@ComponentScan(basePackages = {"org.zerock.service"})
@ComponentScan(basePackages = {"org.zerock.aop"}) //part5
@EnableAspectJAutoProxy //part5
//@EnableAspectautoProxy(proxyTargetClass=true) //part5
@EnableTransactionManagement //part5
@MapperScan(basePackages = {"org.zerock.mapper"}) 
public class RootConfig {

    @Bean
    public DataSource dataSource() {

        HikariConfig hikariConfig = new HikariConfig();

        hikariConfig.setDriverClassName("net.sf.log4jdbc.sql.jdbcapi.DriverSpy");
        hikariConfig.setJdbcUrl("jdbc:log4jdbc:oracle:thin:@localhost:1521:xe");
        hikariConfig.setUsername("book_ex");
        hikariConfig.setPassword("book_ex");

        HikariDataSource dataSource = new HikariDataSource(hikariConfig);
        return dataSource;
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource());
        return (SqlSessionFactory)sqlSessionFactory.getObject();
    }

    //part5
    @Bean
    public DataSourceTransactionManager txManager() {
        return new DataSourceTransactionManager(dataSource());
    }
}
  • WebConfig 클래스
@Configuration
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer{
  @Override
  protected Class<?>[] getRootConfigClasses() {
      return new Class[] {RootConfig.class};
  }

  @Override
  protected Class<?>[] getServletConfigClasses() {
      return new Class[] {ServletConfig.class}; //Part1에서는 사용안함 (Web 연결시부터 사용)
  }

  @Override
  protected String[] getServletMappings() {
      return new String[] {"/"}; //Part1에서는 사용안함 (Web 연결시부터 사용)
  }

  @Override
  protected void customizeRegistration(ServletRegistration.Dynamic
  registration) {  registration.setInitParameter("throwExceptionIfNoHandlerFound", "true"); }

 

 

 

 

728x90

 

728x90

'Spring' 카테고리의 다른 글

Spring - Part1-2 스프링의 특징과 의존성 주입  (0) 2022.01.10