해당 타입의 모든 빈을 사용하고 싶을 때 의존관계 주입에 쓰일 생성자에 해당 타입의 List 또는 Map을 파라미터로 받는다. 스프링 컨테이너는 타입이 같은 모든 빈 객체들을 찾아 List(Map)에 빈을 주입한다. @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); Member member = new Member(1L, "userA", Grade.VIP); // member 유저에게 fixDis..
직접 어노테이션 만들기 @MainDiscountPolicy 어노테이션을 직접 만들어보자. package hello.core.annotataion; import org.springframework.beans.factory.annotation.Qualifier; import java.lang.annotation.*; // @MainDiscountPolicy에 적용하고 싶은 어노테이션을 추가한다. @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Qualifier..
의존관계 주입 방법 생성자 주입 객체가 생성될 때 딱 1번만 호출된다. 실수로 변경될 일이 없고, 의존관계 주입이 누락되는 경우를 미연에 방지할 수 있어 가장 선호되는 방법이다. final 키워드를 사용하면 필드 값이 설정되지 않는 오류를 컴파일 시점에 막을 수 있다. @Component public class OrderService { private final MemberRepository memberRepository; @Autowired public OrderService(MemberRepository memberRepository) { this.memberRepository = memberRepository; } ... } 생성자가 하나만 있으면 @Autowired가 없어도 자동으로 주입된다. 수..
직접 @Bean을 붙여 스프링 빈을 등록하는건 너무너무 귀찮다! 자동으로 빈을 등록하고 의존 관계를 주입하는 방법에 대해 알아보자. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.springframework.context.annotation.ComponentScan.*; @Configuration @ComponentScan( excludeFilters = @Filte..
매번 서로 다른 고객이 요청을 보낼 때마다 memberService 객체를 생성해야할까? 매우 비효율적! 1000명이 요청을 보내면 1000개의 객체가 만들어진다. 그렇다면 객체를 딱 하나만 생성하고 이 객체를 모두 공유해서 사용하도록 하자. == "싱글톤" 싱글톤 패턴 외부에서 호출할 수 있는 생성자를 private으로 막는다. 누군가 객체를 조회할 때마다 클래스에 미리 생성해 두었던 로컬 변수를 항상 반환한다. package hello.core.singleton; public class SingletonService { //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService..
스프링 컨테이너 ApplicationContext를 스프링 컨테이너라 한다. 빈 객체를 관리하는 역할 컨테이너는 XML 또는 Anotation을 기반으로 설정 클래스를 만들 수 있다. (ex: @Configuration) 그렇다면 @Configuration이 달린 Config 클래스를 기반으로 스프링 컨테이너를 만들어보자! new AnnotationConfigApplicationContext(AppConfig.class) 컨테이너는 Config 클래스에서 @Bean 어노테이션이 붙은 메소드를 모두 호출해 빈 객체로 등록한다. 빈 객체는 싱글톤으로 관리된다. 생성이 모두 끝난 뒤에는 빈 객체 상호 간의 의존관계를 설정한다. 빈을 조회하고 싶다면, 1. 빈 이름으로 조회 ac.getBean("빈이름", 빈 ..
- Total
- Today
- Yesterday
- 버추억박스에러
- 리눅스cron
- linuxgedit
- 리눅스
- 쇼미더코드
- 코테
- baekjoon
- Baekjoon27211
- OnActivityForResult
- api문서
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- GitHubAPIforJava
- E_FAIL
- GithubAPI
- Baekjoon27219
- awk프로그램
- 사용자ID
- 백준
- 버추억박스오류
- linux파일
- whatis
- linuxawk
- 백준27219
- Linux
- linuxtouch
- 백준27211
- atq
- cat
- cron시스템
- virtualbox
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |