반응형
Notice
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 |
31 |
Tags
- 보안
- 알고리즘
- 머신러닝
- 컴퓨터공학
- 네트워크
- 데이터분석
- I'm Sorry
- 자료구조
- Yes
- 컴퓨터과학
- 데이터구조
- 파이썬
- 디자인패턴
- springboot
- 소프트웨어공학
- 데이터과학
- 컴퓨터비전
- 소프트웨어
- 사이버보안
- 클라우드컴퓨팅
- 프로그래밍언어
- 버전관리
- 프로그래밍
- 데이터베이스
- 웹개발
- 인공지능
- 빅데이터
- 네트워크보안
- 자바스크립트
- 딥러닝
Archives
- Today
- Total
스택큐힙리스트
자바 스프링 개발 시작하기 - 8일차 IoC·DI와 Bean 생명주기 본문
반응형
1. 왜 IoC와 DI인가?
- IoC(제어의 역전) : 객체 생성과 의존성 관리 책임을 개발자가 아니라 스프링 IoC 컨테이너에게 넘겨 비즈니스 로직에만 집중하도록 돕는다.
- DI(의존성 주입) : 필요한 의존 객체를 컨테이너가 주입한다. 생성자 주입을 기본으로 쓰면 불변·테스트 용이성·순환 참조 방지 효과가 크다.
2. Bean 생명주기의 큰 흐름
- 인스턴스화 (new)
- 의존성 주입 (필드·세터·생성자)
- 초기화 콜백 @PostConstruct 혹은 InitializingBean.afterPropertiesSet()
- 사용 (요청 처리)
- 소멸 직전 콜백 @PreDestroy 혹은 DisposableBean.destroy()
스프링은 초기화·종료 시점을 자동 감지해 콜백을 실행하므로, DB 커넥션 풀 준비·캐시 비우기처럼 리소스 관리 코드를 이곳에 넣는다.
3. XML-free Java Config로 Bean 등록 실습
// AppConfig.java
@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {
@Bean
public HelloService helloService() { // 빈 이름 기본: helloService
return new HelloService();
}
}
// HelloService.java
@Slf4j
public class HelloService {
@PostConstruct
public void init() {
log.info("🎉 Bean 초기화 완료!");
}
public String greet() {
return "Hello, Spring!";
}
@PreDestroy
public void close() {
log.info("💤 Bean 소멸 직전 정리 작업");
}
}
// Main.java
public class Main {
public static void main(String[] args) {
try (AnnotationConfigApplicationContext ctx =
new AnnotationConfigApplicationContext(AppConfig.class)) {
HelloService hello = ctx.getBean(HelloService.class);
System.out.println(hello.greet());
} // 컨텍스트가 AutoCloseable → 종료 시 @PreDestroy 호출
}
}
포인트
- @Configuration 이 붙은 클래스 자체도 Bean.
- @Bean 메서드 리턴 객체가 컨테이너에 등록된다.
- XML 없이도 타입 안전·리팩터링 친화적 설정이 가능하고, IDE 자동완성·컴파일 타임 검증 혜택이 크다.
4. 오늘의 핵심 정리
- IoC → 제어 주체를 프레임워크로 이동.
- DI → 의존성 주입으로 느슨한 결합·테스트 용이.
- Bean 생명주기 → 초기화·종료 훅으로 리소스 관리.
- Java Config → 타입 안전·XML-free 설정, @Configuration + @Bean.
반응형
'개발' 카테고리의 다른 글
자바 스프링으로 정적 게시판 만들기 (0) | 2025.07.14 |
---|---|
Spring Boot로 1분 만에 프로젝트 만들기 (3) | 2025.07.14 |
Gradle 캐시 최적화로 빌드 시간 단축하기 (0) | 2025.07.13 |
자바 스프링 개발 시작하기 - 7일차 코드 품질 높이는 Git Flow·PR·CI (1) | 2025.07.13 |
친구 추천 서비스, 왜 무너졌을까? SRP 위반 리팩터링 실전 해부 (0) | 2025.07.13 |
Comments