본문 바로가기
Back-end 데브코스/week 03 - 05 TIL (Spring)

[TIL] 221117 - SpringBoot Part3 : AutoConfiguration

by young-ji 2022. 11. 24.

SpringBoot Part3 (5) : AutoConfiguration

 

스프링부트 웹 어플리케이션

WAS로 배포하는 작업이 귀찮고 힘들기 때문에 SptingBoot가 자동화 되게 기능을 제공해준다.

SpringBootApplication를 실행하는 것으로 간단히 서버를 배포할 수 있다.

@SpringBootApplication
@ComponentScan(basePackages = "org.prgrms.kdt.customer")
public class KdtApplication {
    public static void main(String[] args) {
        SpringApplication.run(KdtApplication.class, args);

    }
}

 

Configuration에서 해줬던 설정들을 환경변수 yaml파일을 통해 간단하게 등록 가능하다.

기존

// datasource 등록
@Bean
public DataSource dataSource() {
    HikariDataSource dataSource = DataSourceBuilder.create()
            .url("jdbc:mysql://localhost/order_mgmt")
            .username(id)
            .password(pw)
            .type(HikariDataSource.class) // datasource 만들 구현체 타입 지정
            .build();
    return dataSource;
}

//  Resolver 설정을 통한 이름 매핑
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {

    var springResourceTemplateResolver = new SpringResourceTemplateResolver();
    springResourceTemplateResolver.setApplicationContext(applicationContext);
    springResourceTemplateResolver.setPrefix("/WEB-INF/");
    springResourceTemplateResolver.setSuffix(".html");
    var springTemplateEngine = new SpringTemplateEngine();
    springTemplateEngine.setTemplateResolver(springResourceTemplateResolver);

    var thymeleafViewResolver = new ThymeleafViewResolver();
    thymeleafViewResolver.setTemplateEngine(springTemplateEngine);
    thymeleafViewResolver.setOrder(1);
    thymeleafViewResolver.setViewNames(new String[]{"views/*"});
    registry.viewResolver(thymeleafViewResolver);
}

spring boot

spring:
  datasource:
    url: jdbc:mysql://localhost/order_mgmt
    username: root
    password: dudwl0804!
  thymeleaf:
    view-names: "views/*"
    prefix: "/WEB-INF/"
    suffix: ".html"

 

 

servelt name을 설정하지 않으면 기본으로 배포. 잘 실행되는 것을 볼 수 있다.

 

 

servelt name 설정 & CORS 설정

server:
  servlet:
    context-path: /kdt_spring_order_war_exploded

@SpringBootApplication
@ComponentScan(basePackages = "org.prgrms.kdt.customer")
public class KdtApplication implements WebMvcConfigurer {

    public static void main(String[] args) {
        SpringApplication.run(KdtApplication.class, args);
    }
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedMethods("GET","POST")
                .allowedOrigins("*");
    }
}

 

 

클라이언트와도 정상 통신

 


패키지 분류하기 (케이스바이케이스, 원하는대로 구성)

  • controller, reposotory, domain(customer, voucjer,..), model(customer, email, ..) 로 나눠서 그룹핑한는 방식
  • Domain 별로 나눠 그루핑하는 방식 → 파일이 많으면 그 안에 계층

Domain 별

 


AutoConfiguration

 

 

 

출처 - 해리 : SpringBoot Part3

댓글