일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- thymeleaf
- VUE
- Stateless
- Vue.js
- dependency injection
- Excel
- vue-cli
- Security
- Repository
- 프로토타입
- HTTP
- Kotlin
- Spring
- Singleton
- HTTP 메서드
- js
- 의존성 주입
- 로그인
- cache
- BEAN
- Java
- javascript
- DB
- Setter
- 싱글톤
- 라이프 사이클
- di
- vuex
- 캐시
- JPA
- Today
- Total
목록Spring (44)
jhhan의 블로그

이번 포스트는 조회한 빈이 여러개이고, 여러 개인 빈이 모두 필요한 경우에 대해서 살펴보겠습니다. 앞에서는 조회한 빈이 여러개인 경우 그 중에 1개만 선택해서 진행하는 것으로 했습니다. 하지만 어떤 경우에는 조회한 빈이 모두 필요할 때도 있습니다. 전에 사용했던 것을 예시로 들면 DiscountPolicy를 사용했었죠. DiscountPolicy는 fix와 rate으로 나뉘어져 있는데, 이 2개 모두 필요하다고 생각해보면 되겠습니다. (할인을 여러가지 경우로 나누어서 생각하는 것이죠!) 테스트 파일을 만들어서 진행할 것입니다. hello.core.autowired.AllBeanTest 경로가 되도록 진행하겠습니다. public class AllBeanTest { @Test void findAllBean(..

이번 포스트는 그렇게까지 중요한 포스트는 아닙니다. 직접 애노테이션을 만들고 적용해보는 것을 해보려고 합니다. 이전 시간에 조회한 빈이 여러 개인 경우에 대한 해결책에 대해 살펴봤습니다. 그 중에서 @Qualifier에 대해서 알아봤는데요. @Qualifier의 단점이 있습니다. 예시를 한 번 보겠습니다. @Component @Qualifier("mainnDiscountPolicy") public class RateDiscountPolicy implements DiscountPolicy 만약 @Qualifier의 이름을 mainnDiscountPolicy라고 잘못 입력하면 어떻게 될까요? 당연히 에러가 납니다. 하지만 컴파일 시에 에러가 나지 않습니다. 그러면 앱이 구동된 후에 문제가 생겼다는 것을 알게..

이번 포스트에서는 제목처럼 2개 이상의 빈이 있을 때 어떻게 처리하는지 알아보겠습니다. 원래 스프링 빈은 하나가 등록되어야 합니다. 하지만 인간이기에 스프링 빈을 2개 이상 등록하는 실수를 할 수 있습니다. 그러면 에러가 발생하겠죠.. 이런 에러가 발생하는 것을 막는 법에 대해 알아보겠습니다. 일단 먼저 스프링 빈이 2개 등록되었을 경우를 알아보겠습니다. 저는 DiscountPolicy 인터페이스로 2개의 구현체를 만들었습니다. 그 중 RateDiscountPolicy에만 @Component 애노테이션이 있었기 때문에 OrderServiceImpl을 실행하는데 문제가 없었습니다. 근데 FixDiscountPolicy에도 애노테이션을 넣는다면 어떻게 될까요? FixDiscountPolicy에도 추가를 한 ..

이번 포스트는 의존관계 주입과 관련해서 약간 부가적으로 더 이야기 해보려 합니다. 의존관계 주입의 경우 스프링 빈에 등록이 되어 있는 경우에만 작동합니다. 하지만 사람이 코드를 만들기 때문에 간혹 스프링 빈에 등록이 되어 있지 않을 수 있습니다. 혹은 주입할 스프링 빈이 없어도 동작이 되어야 하는 경우가 있습니다. (전자의 경우 코드를 수정하면 되겠지만, 후자의 경우는...?) 이 때 @Autowired만 되어있으면 옵션이 required = true로 되어있기 때문에 주입 대상이 없으면 오류가 발생하게 됩니다. 그러면 이런 경우에 대비를 해야합니다. 방법 @Autowired(required = false) @Nullable Optional 3가지를 활용하면 됩니다. 테스트를 해보기 위해 autowire..
오랜만에 다시 포스트를 작성해 봅니다. 이번 포스트에는 의존관계 주입에 대해 작성해 보려고 합니다. 의존관계 주입은 다른 블로그에서도 많이 설명하고 있는 내용이기 때문에 굳이 제 블로그에 오셔서 볼 필요는 없겠지만, 그래도 중요한 내용이므로 정리를 해놓겠습니다. 의존관계 주입은 크게 4가지로 나눌 수 있습니다. 생성자 주입(권장) Setter 주입 필드 주입 일반 메서드 주입 4번째는 처음 들어보는 것 같습니다. 그럼 순서대로 알아보겠습니다. 1. 생성자 주입 생성자를 통해서 주입 받는 방법입니다. 현재 Spring에서 가장 많이 사용되고 있음. Spring 정책 상으로도 가장 권고되는 방법 많이 쓰이므로 꼭 알아놓는 것이 좋습니다. 특징 생성자 호출 시점에서 1번만 생성되는 것이 보장됨 불변 & 필수인..

저번 포스트에 이어서 컴포넌트 스캔에 대해서 계속 알아보겠습니다. 이번엔 필터에 대해 더 알아보죠. 필터의 종류로 2개가 있습니다. includeFilters: 컴포넌트 스캔 대상에 추가함 excludeFilters: 컴포넌트 스캔 대상에서 제외함 단어만으로 바로 예측할 수 있죠. 그러면 이번엔 어노테이션도 만들어보면서 확인해보겠습니다. 전에 만들어놨던 scan 패키지 안에 filter 패키지를 따로 만들고 진행합니다. 2개의 어노테이션은 각각 어노테이션 클래스로 진행합니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { /** * 이 어노테이션이 사..

이번 포스트에서는 컴포넌트 스캔에 대해서 알아보겠습니다. 지금까지 배운 내용으로는 스프링 빈을 등록할 때는 자바 코드의 @Bean 을 통해 설정 정보에 직접 등록했습니다. (혹은 XML의 을 통해서도 가능) 이렇게 등록하는 것은 등록할 것이 적을 때는 가능합니다. 근데 여기서 조금만 확장을 해보면 10개 등록하는 것이 어려운 일이 아니게 될 것입니다. 그러면 실무에서는 이것보다 훨씬 더 많은 빈이 등록되어야 할텐데 그걸 일일이 등록해야 할까요? 그건 비효율적이라고 생각하고, 아마 중복 등록이나 미등록 같은 오류가 일어날 확률도 높습니다. 그래서 스프링에서는 설정 정보가 없어도 자동으로 스프링 빈을 등록할 수 있게 합니다. 바로 '컴포넌트 스캔' 이라는 기능입니다. (그리고 의존관계 자동 주입으로 @Aut..

이번에는 Singleton 패턴과 @Configuration 어노테이션에 대해서 알아보겠습니다. 이전까지의 예제를 통해서 싱글톤 패턴에 대해서 잘 배운 것 같습니다. 이제 다시 한번 AppConfig 파일을 살펴보겠습니다. @Configuration public class AppConfig { @Bean public MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { // return new FixDiscountPolicy(); return new RateDiscountPolicy(); } @Bean public MemberService..