728x90
Spring Boot의 공식 문서 : Spring Boot Reference Documentation
그 중 Spring Boot 사용하기 : Developing with Spring Boot
1. Build Systems
- Dependency Management
- Spring Boot는 종속성들의 버전을 관리하기 때문에 따로 명시할 필요가 없다.
Spring Boot가 업그레이드 되면 종속성도 함께 업그레이드 된다.
Spring Frame work의 버전과 연결되기 때문에 스프링 프레임 워크의 버전을 명시하지 않는 것이 좋다.
- Spring Boot는 종속성들의 버전을 관리하기 때문에 따로 명시할 필요가 없다.
2. Structuring Your Code
- 패키지
- 패키지를 표시하지 않으면 default 패키지로 간주되는데, @ComponentScan @EntityScan 등의 어노테이션을 사용할 때 문제가 될 수 있으므로 지양하는 것이 좋다.
- 메인 클래스
- main은 root package에 있는것을 추천한다. @SpringBootApplicaton 어노테이션을 보통 main clas에 사용하는데, 해당 지점이 item(ex. @Entity) 들을 찾는 시작지점이 된다.
- @SpringBootApplication이 싫다면, @EnableAutoConfiguration & @ComponentScan으로 대신할 수 있다.
- Spring Boot는 XML 설정이 가능하지만, java 코드 기반 설정을 더 선호한다. main method에 @Configuration 를 붙여서 단일 설정 파일로 사용하는 것을 추천한다.
3. ConfigurationClasses
- 추가적인 설정 불러오기
- 추가적인 설정 클래스들을 불러올때 @Import 어노테이션이 사용된다.
대안으로 @Configuration, @ComponentScan 등이 사용될 수 있다.
- 추가적인 설정 클래스들을 불러올때 @Import 어노테이션이 사용된다.
- XML 설정
- XML 기반 설정을 사용할 경우 @Configuration 클래스 사용을 추천하다. @ImportResource 어노테이션으로도 XML 설정 파일을 불러올 수 있다.
4. Spring Boot 자동 설정
- 자동 설정
- Sring Boot auto-configuration은 사용자가 추가한 jar 종속성들 기반으로 설정을 자동구성 하기위해 노력한다.
예를 들어 HSQLDB가 classpath에 있고, 어떤 설정도 하지 않았다면
memory DB를 자동으로 사용하도록 설정된다. - @SpringBootApplication 또는 @EnableAutoConfiguration 을
@Configuration 클래스들 중 하나에 추가하면 된다.
- Sring Boot auto-configuration은 사용자가 추가한 jar 종속성들 기반으로 설정을 자동구성 하기위해 노력한다.
- Auto-configuration 일부 대체
- 만약 DataSource 빈을 추가하면 default DB 설정은 사라진다.
- 만약 적용되고 있는 설정을 확인하고 싶다면 --debug를 사용하면 된다
- 특정 자동 설정 비활성화
- @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
5. Bean 과 Dependency Injection
- @SpringBootApplication 은 @ComponentScan을 포함하고 있다.
@Service, @repository, @Controller 모두 Bean으로 자동 등록된다
@Service
public class MyAccountService implements AccountService {
private final RiskAssessor riskAssessor;
public MyAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
- 생성자가 두개 이상일 경우 @Autowired로 명시해준다.
@Service
public class MyAccountService implements AccountService {
private final RiskAssessor riskAssessor;
private final PrintStream out;
@Autowired
public MyAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
this.out = System.out;
}
public MyAccountService(RiskAssessor riskAssessor, PrintStream out) {
this.riskAssessor = riskAssessor;
this.out = out;
}
// ...
}
6. @SpringBootApplication
- 아래 특징들을 포함함
- @EnableAutoConfiguration : 위에 설명했던대로 jar기반 자동 설정
- @ComponentScan : 하위 package 대상으로 @Component 들을 스캔한다
- @SpringBootConfiguration : 추가적인 configuration 클래스들을 스캔 및 등록한다
// Same as @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
7. Running application
- Packaged Application으로써 실행하기
- jar 파일의가장 큰 장점중에 하나는 내장 http 서버를 가지고 있는 것이다
- $ java -jar target/myapplication-0.0.1-SNAPSHOT.jar 처럼 실행 가능
- IDE 혹은 Maven, Gradle 환경에서 실행은 문서를 참조
8. Developer Tools
- spring-boot-devtools
- 자동 재시작 등 다양한 기능을 지원한다. 자세한 내용은 홈페이지를 통해서 확인
728x90
'Back-End > Spring' 카테고리의 다른 글
[Spring Boot] SpringApplication (0) | 2023.03.31 |
---|---|
[Spring Boot] Spring Boot - Web(Servelet Web Applications) (0) | 2023.03.30 |
MVC 컨트롤러 List로 받기 (0) | 2021.03.14 |
스프링 컨트롤러에서 json 받기 (feat. 포스트맨) (0) | 2021.03.14 |
[Spring Cloud Config] Client yml 환경변수로 작성하기 (0) | 2021.02.22 |
댓글