일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPQL
- jpa
- Thymeleaf
- transaction
- Spring Boot
- db
- http
- Proxy
- pointcut
- springdatajpa
- 그리디
- Exception
- java
- spring
- SpringBoot
- AOP
- kotlin
- 스프링
- Servlet
- QueryDSL
- 인프런
- 백준
- JDBC
- 스프링 핵심 원리
- 알고리즘
- 김영한
- Greedy
- 자바
- 스프링 핵심 기능
- Android
- Today
- Total
목록java (156)
개발자되기 프로젝트
1. Xml사용 스프링 부트 사용하면서 잘 사용안함... 레거시 프로젝트들이 xml로 되어있음. xml을 사용하면 컴파일 없이 빈 설정 정볼르 변경할 수 있다는 장점도 있음!! GenericXmlApplicationContext를 사용하고 xml을 넘기면됨!!! 2.Xml 작성 resources하위에 appConfig.xml 생성 기존 AppConfig.class와 다른 것 같지만 구조는 똑같다! 3.Test GenericXmlApplicationContext를 사용하고 xml을 넘기면됨!!! public class XmlAppContext { @Test void xmlContext(){ ApplicationContext ac = new GenericXmlApplicationContext("appConf..
원칙 : 부모 타입으로 조회하면, 자식 타입은 줄줄이 끌려나옴. 그러면 Object로 조회하면 전부 다 조회하겠네? 1. TestConfig class생성 해당 테스트에서 사용할 Configuration class public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); @Configuration static class TestConfig{ @Bean public DiscountPolicy rateDiscountPolicy(){ return new RateDiscountPolicy(); } @Bean ..
1. 클래스로 빈을 찾았는데 같은 타입의 빈이 여러개면??? 이름을 지정해주면 된다 ㅋㅋ as.getBeansOfType()사용하면 해당 타입의 모든 빈 조회가능 중복상황을 만들어 주기 위해 내부 클래스에 SameBeanConfig를 만들어주었다. 만약 클래스로 찾았는데 중복된다면 NoUniqueDefinitionException이 발생한다. public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); @Test @DisplayName("타입으로 조회 시 같은 타입이 둘 이상 있으면, 중복 오류가..
1. 스프링 컨테이너에서 스프링 빈을 찾는 가아아아아아장 기본적인 방법 ac.getBean(빈의 이름, 타입) ac.getBean(타입) 찾을 대상이 없으면 예외터짐 2. 이름으로 조회하기 ac.getBean(빈 이름, 타입) MemberService의 구현체는 MemverServiceImpl, MemberServiceImpl이 빈으로 등록되어 있어야 한다. @Test @DisplayName("빈 이름으로 조회") void findBeanByName(){ MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberServiceImpl.clas..
스프링에 등록된 빈을 확인할 수 있나??? 1. 스프링에 등록된 빈을 확인해보자. 아래와 같이 테스트 코드를 작성해 주자. AnnotationConfigApplicationContext(AppConfig.class)를 통해 AppConfig에서 @Bean이 붙은 메서드의 반환 객체를 bean으로 등록한다. Bean으로 등록될 객체 : AppConfig, MemberServiceImpl, OrderServiceImpl, MemoryMemberRepository, RateDiscountPolicy. public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationConte..
1. 스프링 컨테이너 생성 : 어떻게 생성되는겨~ ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 일반적으로 ApplicationContext를 스프링 컨테이너라고 부름. ApplicationContext는 인터페이스 : 오? 다형성~~? 스프링 컨테이너는 XML으로 할수도 있고, @Annotation기반의 자바 설정 클래스로도 가능 자바로 하는 경우 AnnotationConfigApplicationContext(~) --> 편함 ㅎㅎ 파라미터로 AppConfig.class를 넣어줌 ㅋㅋ AnnotationConfigApplicationContext는 ApplicationContext의 구현체임. 2. 스프링..
야아아압 1. AppConfig를 스프링 기반으로 전환! @Configutarion : 설정 정보에 적용 @Bean : 스프링 컨테이너에 bean으로 등록됨. 스프링 컨테이너에 등록 될 때 각 메서드의 이름으로 등록된다. @Configuration public class AppConfig { @Bean public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService(){ return new OrderServiceImpl(memberRepository(), discountPolicy()); } @Bean public MemoryMemberRe..
이전에 할인 정책을 바꾸려다보니 DIP, OCP위반이 발생하여 AppConfig를 도입하여 관심대상을 분리하였다. 1. 사용, 구성의 분리 할인 정책은 변경하기 위해서는 구성 영역의 코드만 변경해 주면 된다. 변경 전 변경 후 2. AppConfig 수정 public class AppConfig { public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); } public OrderService orderService(){ return new OrderServiceImpl(memberRepository(), discountPolicy()); } private MemoryMemberRepository memb..