모르지 않다는 것은 아는것과 다르다.

Other

SpringBoot Properties

채마스 2022. 3. 24. 21:23

SpringBoot Properties 란

  • 스프링 부트의 기본 기능 전체를 튜닝하는 부트 전용 설정 프로퍼티를 말한다.
  • 부트의 기능 거의 대부분을 제어한다.
  • 기본값이 세팅되어 있어서 아무 것도 쓰지 않는다고 해도 디폴트 값으로 작동한다.
  • 만약 설정을 자바 코드 레벨에서 하고있다면, Properties 로 관리할 수 있는지 여부를 체크해볼 필요가 있다.
  •  

 

자바코드 vs Properties

  • 예를들어 아래와 같은 DataSorce 에 관한 설정이 있다고 해보자.
@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource getDataSource() {
        DataSourceBuilder<?> builder = DataSourceBuilder.create();
        builder.username("hyunwook");
        builder.password("1234")
        builder.url("jdbc:h2:mem:test");
        builder.driverClassName("org.h2.Driver");
    }

} 
  • 아래와 같이 간단하게 Properties 로 관리할 수 있다.
  • spring.datasource.driver-class-name="org.H2.Driver" spring.datasource.username=hyunwook spring.datasource.password=1234
  • 이렇게 Properties 를 잘 활용하면 불필요하게 자바코드로 설정할 필요가 없다.

 

Properties 설정 종류

  • Core Properties
  • Cache Properties
  • Mail Properties
  • JSON Properties
  • Data Properties
  • Transaction Properties
  • Data Migration Properties
  • Integration Properties
  • Web Properties
  • Templationg Properties
  • Server Properties
  • Security Properties
  • RSocket Properties
  • Actuator Properties
  • Devtools Properties
  • Testing Properties

 

자주 사용하는 Properties 설정

  • logging
    • debug
    • trace
    • logging.level.원하는.패키지.이름
      • ex) logging.level.com.servicedest.app=debug
  • config
    • spring.config.activate.on-profile
    • spring.config.import
    • spring.config.use-legacy-processing
  • main
    • spring.main.banner-mode
    • spring.main.lazy-initialization
  • web
    • spring.hateoas.use-hal-as-default-json-media-type
    • spring.mvc.converters.preferred-json-mapper
    • spring.mvc.format.date
    • spring.mvc.format.date-time
    • spring.mvc.format.time
    • spring.mvc.view.prefix
    • spring.mvc.view.suffix
  • server
    • server.error.whitelabel.enabled
    • server.port
    • http encoding, session, ssl, tomcat ...

 

@SpringBootApplication

  • @SpringBootConfiguration: 스프링 부트용 @Configuration 이다.
  • @EnableAutoConfiguration: 사전에 정의한 라이브러리를 빈을 등록한다.
  • @ComponentScan: 각종 스프링 빈 애노테이션을 베이스 패키지에서부터 스캔하여 스프
    링 빈으로 스프링 IoC 컨테이너에 등록한다.

 

@SpringBootApplication 속성

@SpringBootApplication(
        exclude = {WebMvcAutoConfiguration.class},
        excludeName = {"org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration"},
        scanBasePackages = {"com.hyunwook.servicedesk.app"},
        scanBasePackageClasses = {MainController.class},
        nameGenerator = BeanNameGenerator.class,
        proxyBeanMethods = true
)
  • exclude : 제거하고 싶은 AutoConfiguration 를 설정할 수 있다.
  • excludeName : 패키지 명으로 제거하고 싶은 AutoConfiguration 를 설정할 수 있다.
  • scanBasePackages : @ComponentScan 할 패키지를 지정한다.
  • scanBasePackageClasses :
  • nameGenerator : BeanNameGenerator 를 설정할 수 있다.
  • proxyBeanMethods : Lite mode 을 설정할 수 있다. -> proxy mode -> Cglib 사용여부

 

SpringApplication 인스턴스 설정

public static void main(String[] args) {
    SpringApplication application = new SpringApplication(ServiceDeskApplication.class);
    application.setBannerMode(Banner.Mode.OFF);
    application.run(args);
}
  • 위와 같이 SpringApplication 인스턴스를 활용해서 부가적인 설정을 할 수 있다.
  • 예를들어, 위와 같이 세팅하면 서버가 구동될때 배너가 보이지 않는다.




REFERENCES

'Other' 카테고리의 다른 글

gradle 파일 이해하기  (0) 2022.06.11
intellij 단축키  (0) 2022.03.14
JDK, JRE, SDK, JavaSE, JavaME, JavaEE 정리  (0) 2022.02.28
java (Spring)로 Shell Script 실행 하기  (0) 2022.02.28
Lombok 사용시 주의할 점  (0) 2022.02.28