일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 빈 스코프
- WebApplicationType
- ApplicationContext
- okhttp
- AOP
- 트랜잭션
- Java
- 그래들
- DispatcherServlet
- 스프링
- 어플리케이션컨텍스트
- ConcurrentHashMap
- testAnnotationProcessor
- Bean Scope
- spring boot
- 빌더패턴
- RequestMapping
- 토비
- Spring
- mybatis
- Thread-safe
- java8
- Lombok
- Gradle
- DataSet
- 그래이들
- annotationProcessor
- IntelliJ
- JavaScript
- 어플리케이션 컨텍스트
- Today
- Total
목록spring (6)
나만보는페이지
[Spring] 사용자 정의 Bean Scope 만들기 싱글톤, 프로토타입 등 스프링에서 기본적으로 제공 해주는 스코프들이 있다. 기본적으로 제공되는 것 외에 내가 원하는 Scope 을 만들어서 활용해보자! 그냥 궁금하니깐 사용자 정의 빈 스코프를 만들어보자. Bean Scope⁉️ 스프링에서 빈 스코프는 쉽게 말하면 bean 의 생명 주기(수명?)를 결정하는 범위이다. 스프링이 Scope 를 이용하여 어떤 식으로 빈의 생명 주기를 관리 하는지는 기회가 되면 자세하게 써볼 예정이다. Bean Scope 종류 스프링에서 기본적으로 제공하는 대표적인 스코프는 2가지 이다. singleton 은 한번만 생성해서 컨테이너 종료까지 유지된다. prototype 은 빈 팩토리에 빈을 요청할 때 마다 새로 생성 해준..
[Spring MVC] DispatcherServlet boot-2.2.6(spring-5.2.5) 기준으로 작성하였다. 스프링 웹 어플리케이션을 개발하면서 항상 나의 시작점은 @Controller 였다. 쿼리 스트링으로 id=pplenty 작성하여 호출하면 당연하게 메서드에 매개변수 String id 를 추가하여 전달 받는다. Http 요청을 파싱하고 전달인자를 만들어 메서드를 호출해주는 것은 어떤 방식으로 이루어질지가 궁금하다. 브라우저를 통한 HTTP 요청이 내가 작성한 Controller 의 특정 메서드까지 도달하기 까지의 과정을 분석해보자. DispatcherServlet 스프링은 모든 요청을 하나의 서블릿(DispatcherServlet)으로 받아서, 처리할 수 있는 핸들러에게 요청을 전달해준..
boot-2.1.3(spring 5.1.5) 기준으로 작성하였다. 스프링에서 컨트롤러 메서드가 URL 에 매핑 되는 과정을 살펴본다. 개인적으로 스프링은 naming 이 정말 쉽게 잘 되어 있다고 생각한다. RequestMapping 과 관련된 빈의 이름은 requestMappingHandlerMapping 이다. 빈 이름으로만 어떤 역할을 하는지 추정해보면 RequestMapping 과 Handler 를 매핑해 주는 빈이라고 유추가 가능하다. 빈 초기화는 ApplicationContext refresh 과정(11) 중에 일어난다. @Bean으로 설정 되어있는 RequestMappingHandlerMapping 빈의 생성 후 초기화(InitializingBean) 하는 과정을 자세하게 살펴보자! 클래스 ..
boot-2.1.3(spring 5.1.5) 기준으로 작성하였다. 스프링부트에서는 어플리케이션 타입에(Servlet/Reactive) 따라 다른 applicationContext 구현체 를 만든다. 아래 내용은 Servlet 타입 기준으로 작성하였다. ApplicationContext refresh() Spring 의 ApplicationContext 가 refresh 될 때, 어떤 과정을 거치는지 알아보자. refresh() 는 ConfigurableApplicationContext 인터페이스의 함수이다. BeanFactory 의 초기화가 이 부분에서 진행되고, Bean 이 등록되는 과정 등이 포함되어 있다. 함수 주석을 보면, XML 파일, 프로퍼티 파일 관계형 DB 등의 설정을 갱신 또는 불러오는 ..
spring classpath: vs classpath*: 이슈 Invalid bound statement (not found) 웹 어플리케이션을 리팩토링하고, 모듈 별로 분리하는 작업을 하는 과정에서 mapperLocations 에 설정된 mapper xml 을 읽지 못하고 Exception 을 뱉었다. 보통 세션팩토리 빈을 아래와 같이 설정하고, 프로퍼티 값으로 xml 의 경로를 AntPattern 으로 설정해 해당 경로의 모든 xml 을 파일을 가져올 수 있도록 설정한다. 원인 파악 리팩토링 과정에서 수정된 사항 중 의심이 가는 부분이 있었다. mapper xml 파일을 공용으로 사용하기 위해 별도의 모듈로 옮겼는데 그 부분이 문제가 될 것 같았다. 역시나 jar 로 말려 들어간 xml 파일들만 스..
boot-2.2.6(spring-5.2.5) 기준으로 작성하였다. spring boot 에서는 아래와 같이 어플리케이션을 실행한다. 웹 어플리케이션 혹은 배치 어플리케이션이던 간에 실행 방법은 비슷하다. 궁금증 어플리케이션 타입에 따라 ApplicationContext 의 구현체도 달라지는데 스프링부트에서는 어떤 방식으로 타입을 구별하고 구현체를 선택할지가 궁금하다. 컨텍스트 생성 부분 찾기 스프링부트가 어플리케이션 컨텍스트를 생성하는 부분은 main 함수의 SpringApplication.run 스태틱 함수부터 따라가 보면 쉽게 찾을 수 있다. run 함수에서 createApplicationContext() 함수를 통해 context 를 생성한다는 걸 알 수 있다. 타입에 따른 구현체 결정 create..