Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 토익
- Microservices
- docker #docker tutorial
- 프로젝트 시작
- 분석 작업
- #단축키
- 감사
- java
- 년말
- #정규표현식
- 2010
- #Gradle Multi project with IntelliJ
- jv
- 방법론
- #화면캡쳐 #macOS
- WebJar
- Lambda
- 평가인증
- Spring Boot
- #Microservice
- bootstrap
Archives
- Today
- Total
사랑해 마니마니
Spring Context 사용하기 본문
I. Spring Context 사용하기
Interface 정의
public interface Calculator {
int calc(int a, int b);
}
구현 클래스 정의
public class DefaultCalculator implements Calculator {
@Override
public int calc(int a, int b) {
return a + b;
}
}
Bean 정의파일 작성
@Configuration
public class AppConfig {
@Bean
Calculator calculator() {
return new DefaultCalculator();
}
}
Entry Point 작성
@SpringBootApplication
public class SpringTourApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringTourApplication.class, args);
Calculator calculator = context.getBean(Calculator.class);
System.out.println(calculator.calc(1,2));
}
}
@SpringBootApplication대신 @EnableAutoConfiguration, @Import(AppConfig.class)를 써도 됨
II. @Autowire를 이용한 의존성 주입
클래스 추가하기(@Autowired 포함한)
public class FrontEnd {
@Autowired
Calculator calculator;
public int run(int a, int b){
return calculator.calc(a,b);
}
}
Bean 정의 파일 수정하기
@Configuration
public class AppConfig {
@Bean
Calculator calculator() {
return new DefaultCalculator();
}
@Bean
FrontEnd frontEnd() {
return new FrontEnd();
}
}
나머지는 동일하게 하고 실행하면 OK.
III. @Autowired말고 Setter로 주입을 할려면
FrontEnd클래스 수정하기
public class FrontEnd {
Calculator calculator;
public int run(int a, int b){
return calculator.calc(a,b);
}
public void set(Calculator calculator) {
this.calculator = calculator;
}
}
Bean 정의 파일 수정하기
@Configuration
public class AppConfig {
@Bean
Calculator calculator() {
return new DefaultCalculator();
}
@Bean
FrontEnd frontEnd() {
FrontEnd frontEnd = new FrontEnd();
frontEnd.setCalculator(calculator());
return frontEnd;
}
}
Entory Point 수정하기
//@SpringBootApplication
@EnableAutoConfiguration
@Import(AppConfig.class)
public class SpringTourApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(SpringTourApplication.class, args);
// Calculator calculator = context.getBean(Calculator.class);
// System.out.println(calculator.calc(1,2));
FrontEnd frontEnd = context.getBean(FrontEnd.class);
System.out.println(frontEnd.run(1,2));
}
}
III. ComponentScan을 이용하면
Configuration 파일 불필요: AppConfig.class 삭제
Entry Point 수정하기
@EnableAutoConfiguration
@ComponentScan
public class SpringTourApplication {...}
FrontEnd Class 수정하기
public class FrontEnd {
@Autowired
Calculator calculator;
...
}
Scan 대상 파일에 @Component Annotation 추가하기
@Component
public class DefaultCalculator implements Calculator {...}
@Component
public class FrontEnd {...}
Comments