일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- spring
- 스프링
- JPQL
- jpa
- AOP
- QueryDSL
- SpringBoot
- kotlin
- 자바
- db
- Exception
- Greedy
- 스프링 핵심 원리
- transaction
- JDBC
- Spring Boot
- pointcut
- 김영한
- 알고리즘
- 스프링 핵심 기능
- Android
- Thymeleaf
- 그리디
- Proxy
- http
- java
- springdatajpa
- 백준
- 인프런
- Servlet
- Today
- Total
목록인프런 (528)
개발자되기 프로젝트
1. 탐색할 패키지 시작위치 지정(basePackages) 모든 클래스를 다~~ 뒤지면 오래걸린다. 꼭 필요한 위치부터 탐색하도록 하자. 그냥 냅두면 라이브러리까지 다뒤짐.... @ComponentScan( basePackages = "~~~" ) 해당 패키지를 포함해서 하위 패키지를 전부 탐색 {"~~", "~~~~"} 여러 패키지를 탐색 시작 위치로 지정 가능 @Configuration @ComponentScan( //스캔에서 제외할 것 -->@ComponentScan도 @Component임, AppConfig나 TestConfig제외하기 위해. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configur..
이 전 까지는 스프링 빈을 등록하기 위해서 @Bean을 사용하여 직접 나열했다. 근데 너무 귀찮지 않음????? 스프링에서는 자동으로 등록하는 Component 스캔기능을 제공함 또한 의존관계를 자동으로 주입하는 @Autowired로 제공 1. @ComponentScan 컴포넌트 스캔을 사용하기 위해 @ComponentScan를 적용 @Component가 붙은 클래스를 찾아서 bean으로 등록함 @Configuration @ComponentScan( //스캔에서 제외할 것 -->@Configuration @Component임, AppConfig나 TestConfig제외하기 위해. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, c..
1. AppConfig에서 method호출할 때 마다 인스턴스가 생성? 기존에 작성한 AppConfig를 보면 memberRepository를 두 번 호출한다. 그러면 MemoryMemberRepository가 두 번 생성되나???? 엥? 싱글톤인데??? 깨지나??? 스프링 컨테이너는 싱글톤 보장해준다고 했는데..? 2. 그러면 두 클래스에 들어가는 memberRepository가 같은지 보자. public class ConfigurationSingletonTest { @Test void configurationTest(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); Memb..
웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 요청이 올 때마다 객체를 만들어야 하나??? 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..
XML로 설정해보자아 1. Xml사용 스프링 부트 사용하면서 잘 사용안함... 레거시 프로젝트들이 xml로 되어있음. xml을 사용하면 컴파일 없이 빈 설정 정볼르 변경할 수 있다는 장점도 있음!! GenericXmlApplicationContext를 사용 bsh-developer.tistory.com 스프링은 어떻게 다양한 설정 형식을 지원하지? BeanDefinition이라는 추상화 때문임! 역할과 구현을 개념적으로 나눈 것! - xml을 읽어서 BeanDefinition을 만들면 된다. - 자바 코드를 읽어서 BeanDefinition을 만들면 된다. - 스프링 컨테이너는 자바 코드인지, 뭔지 몰라도 된다. - 스플이 컨테이너는 BeanDefinition만! 알면 된다!!!!!! BeanDefini..
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..
1. BeanFactory 스프링 컨테이너의 최상위 인터페이스 = 가장 기초적인 스프링 컨테이너의 역할? 스프링 빈을 관리하고 조회하는 역할 getBean() 제공 2. ApplicationContext BeanFactory기능을 모두 상속받음 그럼 BeanFactory랑 무슨 차인데?? BeanFactory에 부가기능을 더해줘! 3. MessageSource 메세지소스를 활용한 국제화 기능 예를 들어서 한국에서 들어오면 한국어, 영어권에서 들어오면 영어로 ㅋㅋㅋ 4. EnviromentCable 환경 변수 개발 환경은 크게 3가지 - 로컬 - 테스트 서버(개발) - 운영 - 스테이지 : 운영과 비슷한 환경 로컬, 개발, 운영 등을 구분해서 처리 5. ResourceLoader 편리한 리소스 조회 파일 ..
원칙 : 부모 타입으로 조회하면, 자식 타입은 줄줄이 끌려나옴. 그러면 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 ..