일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 Boot
- JDBC
- spring
- Proxy
- SpringBoot
- pointcut
- 그리디
- Greedy
- Servlet
- 김영한
- db
- 자바
- 백준
- QueryDSL
- 알고리즘
- transaction
- 스프링
- jpa
- java
- springdatajpa
- Thymeleaf
- 스프링 핵심 원리
- Exception
- 스프링 핵심 기능
- Android
- 인프런
- AOP
- kotlin
- http
- JPQL
- Today
- Total
목록java (156)
개발자되기 프로젝트
1. proxyMode @Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class MyLogger { private String uuid; private String requestURL; proxyMode = ScopedProxyMode.TARGET_CLASS를 추가. - 적용 대상이 class? --> TARGET_CLASS - 적용 대상이 interface? --> INTERFACE MyLogger를 상속받는 가짜 프록시 객체를 빈으로 등록함. 그럼 mylogger의 클래스를 확인해보자 System.out.println("myLogger = " + myLogger.getClass()); Requ..
웹 환경에서만 동작한다 웹 스코프는 스프링이 해당 스코프 종료 시점까지 관리해줌. 종료 메서드 호출 1.웹 스코프 종류 requset : HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청 마다 별도의 빈 인스턴스 생성되고, 관리된다! session : HTTP session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트(serveltContext)와 동일한 생명주기 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 2. Request 스코프 각 HTTP 요청에서만 사용되는 bean을 나타냄? 즉 client에 따라 전용 bean이 생성됨. client에 의해 요청이 들어오면 해당 클라이언트 전용 빈을 생성하고 스프..
싱글톤 빈과 프로토 빈 함께 사용 시 발생하는 문제점 해결해보자. 이 전 글에서 생긴 문제점은 다음과 같다. 프로토 타입 빈은 요청할 때 마다 새로 생성하고 싶다. 하지만 싱글톤 빈 생성시 프로토타입이 주입이된다. 따라서 싱글톤 빈 내부의 프로토타입은 새로 생성되지 않는다. 왜냐 싱글톤 빈에서 스프링 컨테이너에 프로토타입 빈을 더이상 요청하지 않기 때문. 해결하기 위해서는 싱글톤 빈에서 applicationContext를 주입 받고 매번 요청하면 해결 가능.. 이처럼 의존관계를 직접 찾는 것을 dependency loockup (DL)이라 함. 흠.. 근데 applicationContext를 주입받아서 사용하는거는 좀... 이 문제는 해결하기 위해서는 딱 DL기능 만 제공하는 기능이 필요 1. Objec..
프로토타입 빈은 스프링 컨테이너에 요청할 때 마다 새로운 인스턴스 생성하여 반환함. 그런데 싱글톤 빈과 같이 사용하면 의도치 않은 동작을 한다. 1. 프로토타입 빈 직접 요청 어떤 protoType Bean이 있다고 하자. 해당 클래스에는 addCound method를 제공한다. 만약 A client가 prototypeBean을 요청하고 prototypeBean1이라는 이름으로 받으려고 한다. 스프링 컨테이너는 인스턴스를 새로 생성해서 반환한다(prototypeBean1, @x01) 그리고 client A는 addcount를 실행한다.ㄷ protypeBean.getCount를 하면 1이 리턴된다. 이 때 Client B도 prototypeBean을 요청하고 prototypeBean2라는 이름으로 받으려고..
1. 빈 스코프?? 스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어, 스프링 컨테이너가 종료될 때 까지 유지된다. 이것은 스프링 빈이 싱글톤 "스코프"로 생성되기 때문이다. 스코프는 빈이 존재할 수 있는 범위를 의미함 2. 스코프 종류? 싱글톤 : 기본 스코프, 스플이 컨테이너의 시작~종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존 관계 주입까지만 관여하고, 더는 관리하지 않는 매우 짧은 범위의 스코프, 초기화 까지 해줌. -->종료메서드 호출 안됨. 웹 관련 스코프 - request : 웹 요청이 들어오고 나갈 때 까지 유지되는 스코프 - session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 - application : 웹의 서..
1. 빈 생성, 의존성 주입 후 실행할 method 지정 : @PostConstruct @PostConstruct public void init() { System.out.println("NetworkClient.init"); connect(); call("초기화 연결 메세지"); } 2. 빈 소면 전에 실행할 method 지정 : @PreDestroy @PreDestroy public void close() { System.out.println("NetworkClient.close"); disconnect(); } 3. Test public class BeanLifeCycleTest { @Test public void lifeCycleTest(){ AnnotationConfigApplicationCon..
설정 정보에 초기화, 소멸 메서드 지정이 가능하다. @Bean(initMethod = " ~", destoryMethod = " ~~") 1. @Bean 등록 public class BeanLifeCycleTest { @Test public void lifeCycleTest(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(LifeCycleConfig.class); NetworkClient client = ac.getBean(NetworkClient.class); ac.close(); } @Configuration static class LifeCycleConfig{ @Bean(initMethod = "ini..
1. InitializingBean(초기화) 의존성 주입 완료후 초기화 메서드 제공 afterPropertiesSet() : 의존관계 주입 완료후 실행됨. 2. DisposableBean(소멸) 빈 소멸되기 직전 실행하는 메서드 제공 destroy() 3. Test public class NetworkClient implements InitializingBean, DisposableBean { private String url; public NetworkClient(){ System.out.println("생성자 호출, url =" + url); } public void setUrl(String url) { this.url = url; } //서비스 시작시 호출 public void connect(){ ..