본문 바로가기

전체 글93

[Spring] 빈 스코프 빈 스코프란- 빈이 존재할 수 있는 범위이다. 싱글톤: 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다.프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 이후는 관리하지 않는다.웹 관련 스코프request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 컴포넌트 스캔 자동 등록@Scope("prototype")@Componentpublic class HelloBean {} 수등 등록@Scope("prototype")@BeanPrototypeBean HelloBean() { return new HelloBe.. 2026. 1. 4.
[Spring] 빈 생명주기 콜백 - 2 스프링은 크게 3가지 방법으로 빈 생명주기 콜백을 지원한다. 인터페이스설정 정보에 초기화 메서드, 종료 메서드 지정@PostConstruct, @PreDestroy 애노테이션 지원 인터페이스 implements overridepackage hello.core.lifecycle;import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.factory.InitializingBean;public class NetworkClient implements InitializingBean, DisposableBean { private String url; // default constructor p.. 2025. 12. 29.
[Spring] 빈 생명주기 콜백 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면객체 초기화와 종료 작업이 필요하다. 예제 코드package hello.core.lifecycle;public class NetworkClient { private String url; // default constructor public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url) { this.url = url; } // 서비스 시작시 호출 public void co.. 2025. 12. 18.
[Spring] 의존관계 자동 주입 - 3 /애노테이션 생성/빈 조회 List, Map 애노테이션 생성- @Qualifier("mainDiscountPolicy") 처럼 적으면 컴파일시 타입 체크가 안된다. package hello.core.annotation;import org.springframework.beans.factory.annotation.Qualifier;import java.lang.annotation.*;@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documented@Qualif.. 2025. 12. 14.
[Spring] 의존관계 자동 주입 - 2 롬복조회 빈이 2개 이상 - 문제@Autowried 필드명, @Qualifier, @Primary 롬복 롬복 라이브러리 적용group = 'hello'version = '0.0.1-SNAPSHOT'sourceCompatibility = '11'//lombok 설정 추가 시작configurations { compileOnly { extendsFrom annotationProcessor }}//lombok 설정 추가 끝dependencies { implementation 'org.springframework.boot:spring-boot-starter' //lombok 라이브러리 추가 시작 compileOnly 'org.projectlombok:lombok'.. 2025. 12. 12.
[Spring] 옵션 처리 자동 주입 대상을 옵션으로 처리하는 방법이다.- @Autowired(required=false): 자동 주입할 대상이 없으면 메서드를 호출하지 않는다.- @Nullable: 자동 주입할 대상이 없으면 null이 입력된다.- Optional: 자동 주입할 대상이 없으면 Optional.empty가 입력된다. public class AutowiredTest { @Test void AutowiredOption(){ ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); } static class TestBean { @Autowired.. 2025. 12. 9.
[Spring] 의존관계 주입 의존관계 주입- 생성자 주입- 수정자 주입 (setter 주입)- 필드 주입- 일반 메서드 주입 생성자 주입- 생성자를 통해 의존 관계를 주입하는 방법이다.- 생성자 호출 시점에서 1번만 호출되는 것이 보장되고 불편, 필수 의존관계에 사용한다. @Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autrowired public OrderServiceImpl (MemberRepository memberRepository, DiscountPolic.. 2025. 12. 7.
[Spring] 컴포넌트 스캔 탐색 위치와 기본 스캔 대상필터중복 등록과 충돌 탐색 위치와 기본 스캔 대상 @ComponentScan( basePackages = "hello.core",) basePackages를 통해 탐색할 패키지의 시작 위치를 지정한다. 해당 위치 패키지를 포함하여 하위 모든 패키지를 탐색한다.지정하지 않으면 @ComponentScan이 붙은 설정 정보 클래스의 패키지가 시작 위치가 된다. 설정 정보 클래스의 위치를 프로젝트 최상단에 두는 방법이 기본이다. 컴포넌트 스캔은 @Component뿐만 아니라 추가로 포함한다.- @Component: 컴포넌트 스캔에서 사용- @Controller: 스프링 MVC 컨트롤러에서 사용- @Service: 스프링 비즈니스 로직에서 사용- @Repository: 스프.. 2025. 12. 3.