일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- db
- springdatajpa
- 그리디
- AOP
- 스프링 핵심 기능
- JDBC
- Android
- 인프런
- 알고리즘
- spring
- http
- Servlet
- JPQL
- 김영한
- kotlin
- 자바
- Spring Boot
- Proxy
- Thymeleaf
- jpa
- java
- Greedy
- Exception
- transaction
- 백준
- 스프링 핵심 원리
- SpringBoot
- pointcut
- QueryDSL
- 스프링
- Today
- Total
목록인프런 (43)
개발자되기 프로젝트
이 전 까지는 스프링 빈을 등록하기 위해서 @Bean을 사용하여 직접 나열했다. 근데 너무 귀찮지 않음????? 스프링에서는 자동으로 등록하는 Component 스캔기능을 제공함 또한 의존관계를 자동으로 주입하는 @Autowired로 제공 1. @ComponentScan 컴포넌트 스캔을 사용하기 위해 @ComponentScan를 적용 @Component가 붙은 클래스를 찾아서 bean으로 등록함 @Configuration @ComponentScan( //스캔에서 제외할 것 -->@Configuration @Component임, AppConfig나 TestConfig제외하기 위해. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, c..
웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 요청이 올 때마다 객체를 만들어야 하나??? 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 ..
1. 클래스로 빈을 찾았는데 같은 타입의 빈이 여러개면??? 이름을 지정해주면 된다 ㅋㅋ as.getBeansOfType()사용하면 해당 타입의 모든 빈 조회가능 중복상황을 만들어 주기 위해 내부 클래스에 SameBeanConfig를 만들어주었다. 만약 클래스로 찾았는데 중복된다면 NoUniqueDefinitionException이 발생한다. public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SameBeanConfig.class); @Test @DisplayName("타입으로 조회 시 같은 타입이 둘 이상 있으면, 중복 오류가..
스프링에 등록된 빈을 확인할 수 있나??? 1. 스프링에 등록된 빈을 확인해보자. 아래와 같이 테스트 코드를 작성해 주자. AnnotationConfigApplicationContext(AppConfig.class)를 통해 AppConfig에서 @Bean이 붙은 메서드의 반환 객체를 bean으로 등록한다. Bean으로 등록될 객체 : AppConfig, MemberServiceImpl, OrderServiceImpl, MemoryMemberRepository, RateDiscountPolicy. public class ApplicationContextInfoTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationConte..