안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
IoC 지원 특징 파악하기
@Configuration
- bean 설정에 관련된 class 지정
UserConfig
id : 메소드명 (userController, userService)
class : 리턴타입
@Configuration
public class UserConfig {
@Bean
public UserController userController() {
return new UserController();
}
@Bean
public UserService userService() {
return new UserServiceImpl();
}
}
@Scope, @Lazy 등의 어노테이션을 통해 옵션도 설정 가능!
UserController
public class UserController {
private UserService userService;
public String findNameById(String id) {
String name = userService.findNameById(id);
return "사용자 이름 : " + name;
}
}
UserService interface
public interface UserService {
String findNameById(String id);
}
UserServiceImpl
public class UserServiceImpl implements UserService {
public String findNameById(String id) {
if("honggd".equals(id)) {
return "홍길동";
}
return null;
}
}
UserMain
public class UserMain {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(UserConfig.class);
System.out.println("================ spring container 초기화 완료 ================");
}
}
@콘솔출력값
UserController 객체 생성!
UserService 객체 생성!
================ spring container 초기화 완료 ================
UserConfig에서 @Bean으로 등록한 객체들이 spring container 초기화 시 생성되는 것을 확인할 수 있습니다.
DI 특징 파악하기
UserConfig
@Configuration
public class UserConfig {
@Bean
public UserController userController() {
System.out.println("UserController 객체 생성!");
return new UserController(userService());
}
@Bean
public UserService userService() {
System.out.println("UserService 객체 생성!");
return new UserServiceImpl();
}
}
new UserController() 객체 생성 시 userService()를 호출하여 UserServiceImpl 객체가 리턴되어 주입되도록 하였습니다.
UserController
public class UserController {
private UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
public String findNameById(String id) {
String name = userService.findNameById(id);
return "사용자 이름 : " + name;
}
}
UserServiceImpl
interface 생략
public class UserServiceImpl implements UserService {
public String findNameById(String id) {
if("honggd".equals(id)) {
return "홍길동";
}
return null;
}
}
UserMain
public class UserMain {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(UserConfig.class);
System.out.println("================ spring container 초기화 완료 ================");
UserController userController = context.getBean(UserController.class);
String id = "honggd";
String name = userController.findNameById(id);
System.out.println(name);
}
}
@콘솔출력값
UserController 객체 생성!
UserService 객체 생성!
================ spring container 초기화 완료 ================
사용자 이름 : 홍길동
정상적으로 주입되어 잘 출력되는 것을 확인할 수 있습니다.
'Java > Spring' 카테고리의 다른 글
Spring) Legacy Project 생성 - 버전 최신화하기 (0) | 2022.08.16 |
---|---|
Spring) Java Annotation + Xml을 통한 context 작성 - IoC, DI 특징 파악하기 (0) | 2022.08.16 |
Spring) xml을 통한 context 작성 - DI 특징 파악하기 (0) | 2022.08.12 |
Spring) xml을 통한 context 작성 - IoC 지원 특징 파악하기 (bean 생성) (0) | 2022.08.12 |
Spring) 스프링 개요, 특징, 주요 모듈 (0) | 2022.08.11 |