Spring Boot는 애플리케이션의 설정 및 실행을 단순화합니다. 이를 위해 제공되는 핵심 요소는 다음과 같습니다:
@SpringBootApplication@Configuration, @EnableAutoConfiguration, @ComponentScan을 포함하고 있습니다.SpringApplicationrun 메서드 호출)과 환경설정 관리 등을 수행합니다.Spring Boot는 환경 설정 파일을 통해 다양한 설정값을 관리합니다.
application.properties 및 application.ymlkey=value) 구조로 지정합니다.application.yml은 YAML 포맷으로, 중첩된 설정을 더 읽기 쉽게 표현할 수 있습니다.@PropertySource와 @ConfigurationProperties@PropertySource: 외부 설정 파일을 읽어오는 데 사용합니다.@ConfigurationProperties: 설정 파일의 값을 특정 POJO에 바인딩합니다.@Configuration
@PropertySource("classpath:config.properties")
public class AppConfig {
@Value("${app.name}")
private String appName;
// getter, setter...
}
Logging :: Spring Boot
Spring Boot는 로깅 프레임워크를 통합하여 애플리케이션의 로그를 관리합니다.
Logback을 사용하며, log4j2 등 다른 로깅 프레임워크로 쉽게 교체 가능.logback.xml 또는 logback-spring.xml에서 관리.spring.application.name 설정 시 출력됨)Profiles는 애플리케이션의 환경별 설정을 관리하는 방법입니다.
dev), 테스트(test), 운영(prod) 환경에 따라 다른 설정 적용 가능.spring.profiles.active=devapplication-{profile}.properties 또는 application-{profile}.yml로 분리하여 관리.Structuring Your Code :: Spring Boot
Spring Boot에서는 권장되는 패키지 구조를 따르는 것이 좋습니다.
@ComponentScan에 의해 기본적으로 @SpringBootApplication의 패키지와 하위 패키지에서 빈을 검색합니다.com
+- example
+- myapplication
+- MyApplication.java // 메인 애플리케이션
+- customer
+- Customer.java // 도메인 모델
+- CustomerController.java // 컨트롤러
+- CustomerService.java // 서비스
+- CustomerRepository.java // 리포지토리
@Import를 사용해 다른 패키지의 설정을 명시적으로 가져옵니다.@Configuration
public class BeanConfig {
@Bean
public DatabaseService service() {
return new DatabaseService();
}
}
@SpringBootApplication
@Import(BeanConfig.class) // BeanConfig 등록
public class BootApplication implements CommandLineRunner {
@Autowired
private ApplicationContext ctx;
@Override
public void run(String... args) throws Exception {
DatabaseService service = ctx.getBean("service", DatabaseService.class);
List<String> lists = service.getList();
System.out.println(lists); // 출력
}
}
DatabaseServicepublic class DatabaseService {
public List<String> getList() {
return Arrays.asList("홍길동", "박문수");
}
}
BeanConfigDatabaseService를 빈으로 등록.@Configuration
public class BeanConfig {
@Bean
public DatabaseService service() {
return new DatabaseService();
}
}
BootApplication@Import로 BeanConfig를 가져와 빈을 활용.@SpringBootApplication
@Import(BeanConfig.class)
public class BootApplication implements CommandLineRunner {
@Autowired
private ApplicationContext ctx;
@Override
public void run(String... args) throws Exception {
DatabaseService service = ctx.getBean("service", DatabaseService.class);
List<String> lists = service.getList();
System.out.println(lists);
}
}
@Import를 활용해 빈 등록 문제를 해결할 수 있습니다.