일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 김영한
- JDBC
- Exception
- 자바
- Thymeleaf
- Spring Boot
- kotlin
- Servlet
- spring
- 인프런
- 그리디
- db
- 스프링
- pointcut
- 스프링 핵심 기능
- 백준
- java
- QueryDSL
- transaction
- 스프링 핵심 원리
- AOP
- Android
- JPQL
- 알고리즘
- SpringBoot
- springdatajpa
- http
- Greedy
- jpa
- Proxy
- Today
- Total
목록스프링 핵심 기능 (17)
개발자되기 프로젝트
lombok 개편함 대부분 의존관계는 불변이다. 따라서 생성자에 final 키워드 사용함 근데 생성자도 만들어야 하고,,, 대입하는 코드도 만들어야하고.. 여간 귀찮은게 아니다. 해줘! 1. build.gradle - dependencies 추가 implementation 'org.projectlombok:lombok:1.18.18' implementation 'org.projectlombok:lombok:1.18.18' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.pr..
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. 스프링 컨테이너에서 스프링 빈을 찾는 가아아아아아장 기본적인 방법 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. 스프링..