본문 바로가기

전체 글90

[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.
[Spring] 컴포넌트 스캔, 의존관계 자동 주입 컴포넌트 스캔과 의존관계 자동 주입 @Bean을 통해 설정 정보에 직접 등록할 스프링 빈을 나열했다.누락될 가능성도 있으므로 설정 정보가 없어도 자동으로 스프링 빈을 등록하는컴포넌트 스캔이라는 기능을 사용한다.의존관계를 자동으로 주입하는 @Autowired 기능도 사용한다. AutoAppConfig.javapackage hello.core;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;@Configuration@ComponentScan.. 2025. 12. 1.
[Spring] @Configuration과 싱글 @Configuration과 싱글톤@Configuration과 바이트코드 조작 @Configuration과 싱글톤 @Configurationpublic class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService(){ return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemberRepository memberRepository.. 2025. 11. 30.
[Spring] 싱글톤 컨테이너 싱글톤 컨테이너싱글톤 방식의 주의점 싱글톤 컨테이너- 스프링 컨테이너는 싱글턴 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다.- 싱글톤 레지스트리라 한다. @Test @DisplayName("스프링 컨테이너와 싱글톤") void springContainer(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService1 = ac.getBean("memberService", MemberService.class); MemberService memberService2 = ac.getBean("memberSer.. 2025. 11. 24.