일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스프링 핵심 기능
- QueryDSL
- 김영한
- Greedy
- transaction
- Servlet
- SpringBoot
- db
- 그리디
- kotlin
- 스프링 핵심 원리
- pointcut
- Android
- http
- 인프런
- spring
- 스프링
- Spring Boot
- 자바
- JDBC
- jpa
- Proxy
- Exception
- 알고리즘
- java
- 백준
- JPQL
- springdatajpa
- AOP
- Thymeleaf
- Today
- Total
목록김영한 (39)
개발자되기 프로젝트
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cnw3ji/btraJzMTlbB/o9sjesOEjadSZluwK2TK70/img.png)
1. 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 2. 생성자 주입. ???? : @Autowired가 있네? 컨테이너에서 같은 타입의 빈 꺼내옴. 집어넣음 특징 - 생성자 호출 시점에 딲 1번 만 호출되는 것이 보장됨. - 불변, 필수 의존관계에 사용--> set을 public으로 열어두면 안됨 (getter, setter 막만들면 안됨!) @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; //private final DiscountPolicy discountPolicy = new RateDiscoun..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nVLGc/btraFFNi6bA/tQlF3jXkyNKlKHIXIAYfx0/img.png)
컴포넌트 스캔을 통해 같은 빈 이름을 등록하면????? 자동 빈 등록 vs 자동 빈 등록 수동 빈 등록 vs 자동 빈 등록 1. 자동 빈 등록 vs 자동 빈 등록 컴포넌트 스캔을 통해 이미 등록되었는데, 또! 등록되면??? ConflictingBeanDefinitionException 발생 스프링 빈 설정 메타정보 - BeanDefinition XML로 설정해보자아 1. Xml사용 스프링 부트 사용하면서 잘 사용안함... 레거시 프로젝트들이 xml로 되어있음. xml을 사용하면 컴파일 없이 빈 설정 정볼르 변경할 수 있다는 장점도 있음!! GenericXmlApp bsh-developer.tistory.com 2. 수동 빈 등록 vs 자동 빈 등록 현재 MemoryMemberRepository가 @Com..
includeFilters : 스캔 대상 추가 includeFilters = @ComponentScan.Filter(type = , classes = ) excludeFilters : 스캔 대상에서 제외 excludeFilters = @ComponentScan.Filter(type = , classes = ) 1. MyIncludeComponent Annotation 해당 annotaion이 붙은 클래스는 컴포넌트 스캔에 포함 @Target(ElementType.TYPE) //TYPE : class레벨에 붙음 @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { //얘가 붙은건 Component 스캔에 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/I5z8a/btraKEsMoyS/L97igWLCJf05tw82BYKnVK/img.png)
1. 탐색할 패키지 시작위치 지정(basePackages) 모든 클래스를 다~~ 뒤지면 오래걸린다. 꼭 필요한 위치부터 탐색하도록 하자. 그냥 냅두면 라이브러리까지 다뒤짐.... @ComponentScan( basePackages = "~~~" ) 해당 패키지를 포함해서 하위 패키지를 전부 탐색 {"~~", "~~~~"} 여러 패키지를 탐색 시작 위치로 지정 가능 @Configuration @ComponentScan( //스캔에서 제외할 것 -->@ComponentScan도 @Component임, AppConfig나 TestConfig제외하기 위해. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configur..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUc9A7/btraIocThXd/KSoZgDhMRAzBdaRjRWGl3k/img.png)
이 전 까지는 스프링 빈을 등록하기 위해서 @Bean을 사용하여 직접 나열했다. 근데 너무 귀찮지 않음????? 스프링에서는 자동으로 등록하는 Component 스캔기능을 제공함 또한 의존관계를 자동으로 주입하는 @Autowired로 제공 1. @ComponentScan 컴포넌트 스캔을 사용하기 위해 @ComponentScan를 적용 @Component가 붙은 클래스를 찾아서 bean으로 등록함 @Configuration @ComponentScan( //스캔에서 제외할 것 -->@Configuration @Component임, AppConfig나 TestConfig제외하기 위해. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, c..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8xs8T/btraImrG1h3/4cX1PoQnC1aneWBwsa4Sx0/img.png)
웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 요청이 올 때마다 객체를 만들어야 하나??? 1. 스프링 없는 DI 컨테이너 스프링 없는 DI 컨테이너 사용 호출 될 때 마다 객체를 생성하는지 확인 public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer(){ AppConfig appConfig = new AppConfig(); //1. 조회 : 호출할 때 마다 객체를 생성 MemberService memberService = appConfig.memberService(); //2. 조회 : 호출할 때 마다 객체를 생성 MemberService memberService2 = appConfig.m..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b7LIU1/btrat2n8G0H/VgcGjkXWCHkKytdxT7m52K/img.png)
XML로 설정해보자아 1. Xml사용 스프링 부트 사용하면서 잘 사용안함... 레거시 프로젝트들이 xml로 되어있음. xml을 사용하면 컴파일 없이 빈 설정 정볼르 변경할 수 있다는 장점도 있음!! GenericXmlApplicationContext를 사용 bsh-developer.tistory.com 스프링은 어떻게 다양한 설정 형식을 지원하지? BeanDefinition이라는 추상화 때문임! 역할과 구현을 개념적으로 나눈 것! - xml을 읽어서 BeanDefinition을 만들면 된다. - 자바 코드를 읽어서 BeanDefinition을 만들면 된다. - 스프링 컨테이너는 자바 코드인지, 뭔지 몰라도 된다. - 스플이 컨테이너는 BeanDefinition만! 알면 된다!!!!!! BeanDefini..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cjZ1yD/btrax8H47PD/eW2xYPD3YaSVH0jfxX66J1/img.png)
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..