일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- mybatis
- devtools
- spring boot mybatis
- spring camp
- spring test mvc
- Spring Boot
- Multi DataSource
- spring cloud
- @MVC
- spring security
- 스프링시큐리티
- Fiilter
- 데브툴즈
- spring
- spring cloud config
- elasticache
- apache thrift
- 스프링 부트
- KSUG
- spring boot 1.3
- Spring MVC
- WebApplicationInitializer
- 스프링
- spring-mybatis
- spring boot devtools
- OAuth 2.0
- ServletContextInitializer
- 인텔리J
- Spring Security OAuth
- OAuth2.0
- Today
- Total
목록spring (14)
홍이의 개발 노트
스프링 MVC로 웹을 개발 할 때 요청정보 즉 HTTP 정보 전체를 로깅 하고 싶을 때가 있다. 특히 개발시에서 제대로 요청을 하고 있는지 많이 궁금할 것이다. 보통 웹서버에서 남겨주는 엑세스로그 같은 경우에는 요청된 url 과 응답 코드 등 기본정보만 제공 하는데 많이 부족 할 때가 있다. 예를 들면 body정보가 남지 않기 때문에 개발시에 많이 부족 하게 된다. 그래서 스프링MVC 에서 예전부터 지원하는 필터가 존재하는데 의외로 모르는 분이 많이 있어서 이렇게 다시 소개 한다. @Bean public CommonsRequestLoggingFilter commonsRequestLoggingFilter() { CommonsRequestLoggingFilter filter = new CommonsReque..
현재 프로젝트에서 스프링 세션을 도입한 후 레디스를 연동해서 사용하고 있었다. 로컬이나 직접 레디스 설치 했을 시에는 큰문제가 없었으나 AWS에서 Elasticache(이하 엘라스틱캐시)를 사용해서 연동하려고 하니 아래와 같은 오류가 발생하였다. redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'CONFIG' redis-server 문제는 엘라스틱캐시는 개발환경과 연동이 힘들다. 직접 EC2에서 실행할 때만 접속이 가능한 정책때문에 테스트도 힘들었다. 그래서 개발자의 최고 무기인 구글링과 스프링 세션 내부 소스를 추적하여 찾아보니 스프링 세션 시작시 org.springframework.session.data.redis.conf..
인텔리J와 Spring Devtools를 사용하면 devtools에서 이야기한 기능이 안먹히는 경우가 있다. 물론 이클립스에서는 문제없이 바로 되지만 유독 인텔리J에서만 안된다. 예를 Thymeleaf 나 벨로시티등 변경되면 바로 적용이 안되어서 많이 불편하다. 그래서 ctrl(OSX command) + shift + f9를 따로 눌러줘야한다. 그래서 여기저기 조사해보니 기본적으로 옵션으로 조정해줘도 애플리케이션이 실행상태에서는 적용이 안되도록 되어 있었다. 그러던 중 스택오버플로우를 보니 매크로를 사용해보라는 힌트를 줘서 ( 링크 ) 한번 해보았다. 인텔리J매크로 만들기가 생각 보다 쉽다. Edit -> Macros -> Start Macro Recoding 위의 메뉴로 가보자 그럼 IDE 하단에 아래..
관련 클래스: org.springframework.boot.autoconfigure.web.BasicErrorController스프링 부트에서 예외 사항이 발견되면 따로 처리 하는 부분이 존재하지 않으면 이 클래스에서 대부분의 예외를 처리한다.특수한 예외를 제외기본 기능 컨텐츠 타입이 text/html 형태 즉 브라우저에서 페이지로 요청 했을 때 에러가 발생하면 페이지로 보인다.기본 페이지org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration.WhitelabelErrorViewConfiguration 에서 defaultErrorView 확인해당 페이지 부분을 커스텀방법Bean이름이 "error" 이름으로 View 를 리턴하는 방법 ( 예..
Spring Boot 는 기본적으로 DataSource 하나를 기준으로 되어 있다. 그런데 개발을 하다 보면 DataSource는 최소 두개이상이 필요할 경우가 비교적 많이 생긴다. 보통 예를 들면 Mysql 을 Master Slave 를 구조 형태로 따로 접근 해야 한다거나 아니면 관련 없는 레거시 DB를 가져 온다거나 그럴 경우가 있다. 그럴 경우 기본적인 Spring 같은 경우에는 모든 DataSoure를 선언하고 각각 트랜잭션을 만들고 JPA 또는 MyBatis(ibatis) 등을 사용해서 사용해야 되는 Bean을 DataSource 만큼 만들거나 해야된다.그런데 Spring Boot 개발 형태를 보면 대부분 직접 설정을 줄이고 속성(properties)으로 설정하여 구성 하는 형태를 (내가 보기..
Spring Boot 가 Mybatis 지원이 없어서 만든 프로젝트 자세한 내용과 소스 위치https://github.com/sbcoba/spring-boot-mybatis
기존 Spring 3.1+ (with Servlet 3+) 에서 web.xml을 사용하지 않고 개발시에 Servlet 및 Filter를 등록하고자 할 때에는 org.springframework.web.WebApplicationInitializer 그리고 Spring 3.2+(with Servlet 3+) 에서는 인터페이스를 상속하여 편하게 사용할 수 있도록 만든 클래스인 org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer 를 사용한다. 그런데 문제는 Spring boot에서 개발시에는 위의 인터페이스 또는 클래스가 호출 되지 않는다. 아마 Embed Tomcat을 사용하면서 변경된 부분이 있..
Spring Boot 1.3 에 DevTools라는 프로젝트가 추가 관련 내용: https://spring.io/blog/2015/…/17/devtools-in-spring-boot-1-3 기능에 대해 대략 살펴보면Thymeleaf, Freemarker, Groovy Templates, Velocity, Mustache 의 캐시부분의 비활성화 속성을 기본적으로 셋팅 새로고침 했을 때 바로 바뀌도록 하려는 듯 ( 옵션만 변경된 듯 )소스의 변경이 일어나면 스프링 Boot 서버가 새로 시작되면서 바로 반영 소스 변경시 감지하여 스프링 컨테이너가 리스타팅 됨 class가 많이 있거나 서버 시작시 오래 걸릴경우 효율이 떨어질것으로 보임 그래서 해당 본문에도 마이크로서비스(MSA) 에는 적합할거라고만 기술html..
실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료 from 수홍 이
Spring camp 발표자료 from SuHong Lee