본문 바로가기

backend/Spring

@Postconstruct 과 @CachePut @Postconstruct과 @CachePut을 사용하면서 생겼던 이슈. 문제 @Postconstruct를 이용하여 캐시 데이터를 저장하는 로직을 구현하였는데, (캐시가 put되지 않는)저장되지 않는 이슈가 발생했다. 문제를 해결하기 위해서 알아야 했던 것 1 @CachePut을 사용하여 데이터를 캐시에 저장할 때, CacheAspectSupport를 상속받은 CacheInterceptor 클래스의 invoke()메서드를 통해서 execute()메서드를 실행한다. 중요한게 이때 initialized값을 통해서 aspect를 사용할 수 있는지에 대해서 체크하고 캐시에 저장한다. initialized값은 기본값이 false이고, false인 경우에는 저장없이 실행만시킨다. 아래 코드는 execute()메서드.. 더보기
intellij로 visualVM을 쉽게 사용하기. visualVM이란?소개는 아래에 좋은 글을 참조.https://beyondj2ee.wordpress.com/2012/11/16/eclipse%EC%97%90%EC%84%9C-visualvm-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/http://bcho.tistory.com/789 1. visualVM을 설치 https://visualvm.github.io/ 2. intellj에서 visualVM Lanuncher 플러그인 설치 3. visualVM Lanchuer에 visualVM.exe 파일 등록 인텔리J에 새로 생긴 위와 같이 생긴 run, debug 버튼을 누르고 아래와 같은 visualvm.exe 파일경로를 넣어주면 끝입니다.C:\visualvm\visualvm_139\.. 더보기
스프링 프로퍼티 설정 주입3 - 실시간(run-time)으로 properties Relaod 보통 스프링에서 properties는 DB설정값 처럼 변하지 않는 정적인 데이터를 많이 사용합니다. 하지만, 이러한 프로퍼티값을 변경해야 할 경우가 발생하면 어떻게 해야하나요? 우선, properties를 다시 설정하고 build한 후 다시 재배포하는 과정을 생각할 수 있다. 하지만, 이러한 방법은 재배포를 해야하는 단점이 있다. 이런 경우에 properties의 변경을 감지하여 바로 반영하는 쉬운 방법 있었다. Apache Commons Configuration 이다 Apache Commons Configuration version 1은 정말 손쉽고 빠르게 적용할 수있는 장점이 있다. Apache Commons Configuration version 1에 대한 훌륭한 설명을 해주는 글 이에 비해 몇가지.. 더보기
스프링 프로퍼티 설정 주입1 - @PropertySource와 Enviroment 스프링 프로젝트를 하면서 jdbc 설정 값, version 등과 같이 정적인 데이터를 프로퍼티로 많이 사용합니다. 우리는 프로퍼티를 annotation으로 쉽게 외부값을 가져와서 사용할 수 있습니다. 스프링에서 런타임시 프로퍼티 값을 가져오기 위해서 사용할 것 2가지.PropertySource 스프링 표현 언어 SpEL(spring Expression Language) @PropertySource를 선언. @Configuration @PropertySource("classpath:static/properties/common.properties") public class AppConfig { } @PropertySource 어노테이션에 coommon.properties의 위치를 넣어주면, Enviromen.. 더보기
스프링 소개(introduction)-정리 스프링 doc을 보면 introduction부분의 개념을 정리해보았다. 1. 스프링 프레임워크 소개 스프링 프레임워크는 자바 애플리케이션 개발을 위한 포괄적인 인프라스트럭쳐를 제공하는 자바 플랫폼이다. 스프링은 당신이 애플리케이션에 집중할 수 있도록 인프라스트럭쳐를 다룬다. 스프링을 사용하면 “plain old Java objects”(POJOs)로 어플리케이션을 만들고 엔터프라이즈 서비스를 비침투적으로 POJO에 적용할 수 있다. 이 능력은 Java SE 프로그래밍에 적용되고 전제 혹은 부분적으로 Java EE에 적용된다. Spring Framework 특징 크기와 부하의 측면에서 경량 제어 역행(IoC)를 통하여 어플리케이션의 느슨한 결합을 도모 관점지향(AOP) 프로그래밍을 위한 풍부한 지원을 함... 더보기
스프링 프로퍼티 설정 주입2 - @Value를 사용하자 0. @PropertySource로 enviroment꺼내기 common.properties @Configuration@PropertySource("/common.properties")public class EnvironmentConfig { } doc에서 PropertySource의 다양한 옵션을 확인하시면 좋을거 같습니다. @Component public class PrintOutByEnvironment { @Autowired private Environment env; @PostConstruct private void init(){ System.out.println(env.getProperty("test.str")); } } 위와 같이 Environment에서 test.str를 꺼내서 확인 할 수 .. 더보기
02. 스프링 시큐리티(spring-security)02 - DB와 연동(유저, 유저권한) 이전 글에서 말씀드린바와 같이 살표본 내용을 직접 구현해보려합니다. 스프링은 추상화된 클래스, 인터페이스를 제공하고 사용자가 이를 직접 구현하게 만듭니다. 이러한 특징은 security에서도 마찬가지입니다. Refference https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#what-is-acegi-security https://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/core/userdetails/UserDetails.html 개발환경 spring-boot gradle java8 1. 우선 secur.. 더보기
01. 스프링 시큐리티(spring-security) - DB와 연동(유저, 유저권한) spring-web으로 로그인을 개발하다 보면 언젠간 만나게되는 스프링시큐리티(spring-security)에 대해서 정리해보겠습니다. 아래 spring doc을 참고하여 작성하였습니다. 참고: https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#what-is-acegi-security 참고 : http://dev.anyframejava.org/docs/iam/1.1.3/reference/html/apㄱ.html 참고 : https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/package-summar.. 더보기