spring-boot-study
[ Inflearn ] 스프링 부트 개념과 활용 강의를 듣고 챕터별 간단하게 정리합니다.
내용적 오류가 존재 할 수 있으며 부족한 부분은 언제든지 지적해주시면 감사드립니다.
-
이 챕터에서 하고자하는 것
1-1. spring-boot 가 실행될때 AutoConfigure를 이용하여 외부 프로젝트에서 설정한 Bean을 자동으로 주입받아 사용하는 것이 주된 목표이다.
-
시작
2-1. Starter 와 AutoConfigure 의 네이밍 패턴은 다음과 같다.
Naming patterns 의미 Xxx-spring-boot-autoconfigure 자동 설정 Xxx-spring-boot-starter 필요한 의존성 정의
그냥 하나로 만들고 싶을 때는 Xxx-spring-boot-starter Naming pattern 을 따르면 된다.
해당 프로젝트에 다음과 같은 의존성을 추가한다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.4.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
이제 Bean으로 등록할 class를 하나 만들어보자.
public class JaeJoon {
private String name;
private Integer age;
//Gatter , Setter , 생성자 , 생략
}
이 Class 를 Bean으로 등록하기 위해 자바설정 파일을 생성해야 한다.
@Configuration
public class JaeJoonConfig {
@Bean
JaeJoon jaeJoon(){
return new JaeJoon("김재준",26);
}
}
이제 부터 핵심인 @EnableAutoConfiguration
이 해당 프로젝트 자동 설정을 찾을 수 있도록 셋팅을 해보자.
java -> resource 디렉토리 -> META-INF-> spring.factories 생성
- spring.factories
- key : org.springframework.boot.autoconfigure.EnableAutoConfiguration
- value: FQCN(Fully Qualified Class Name)
위 같은 셋팅을 다 끝낸 후 mvn intall 실행하여 빌드하면 된다.
빌드가 다 끝났다면 다시 원래의 spring-boot 프로젝트의 pom.xml 에 내가 빌드한 프로젝트를 주입하면 끝난다.
<dependency>
<groupId>org.example</groupId>
<artifactId>jaejoon-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
이제 사용해보자 !
@Component
public class ApplicationRunner implements org.springframework.boot.ApplicationRunner {
@Autowired
JaeJoon jaeJoon;
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println(jaeJoon.getName());
System.out.println(jaeJoon.getAge());
}
}
해당 Spring-boot 프로젝트에선 JaeJoon을 bean으로 등록한 적 없지만 주입 받아서 사용 할 수 있다. 결과는 다음과 같다.
'Spring > boot' 카테고리의 다른 글
[spring-boot] 외부설정(application.properties) (0) | 2021.01.13 |
---|---|
[Spring-boot] ApplicationEvent 등록 (0) | 2021.01.12 |
[Spring-boot] 자동설정 2부 (0) | 2021.01.12 |
[Spring-boot] 자동설정의 이해 (0) | 2021.01.12 |
[Spring-boot] 의존성 이해와 응용 (0) | 2021.01.12 |