Devlopment

    Spring File 읽어오기

    File 주소 기반String absoluteFilePath = this.getClass().getClassLoader().getResource("key/fileName").getFile(); ClassPath 기반ClassPathResource classPathResource = new ClassPathResource(filePath); File file = classPathResource.getFile();

    RestController의 기본 컨텐츠 타입 변경

    Spring에서 RestController를 사용하면 URL 끝에 ".json"을 붙여주면 json 타입으로 리턴을 해준다.하지만 기본값은 xml이여서 xml로 리턴이 되어진다. 이 기본값을 변경하려면 다음과 같이 해야 한다. 1. Controller에서 설정하기 - producesController.java@RequestMapping(value = "/json", method = RequestMethod.GET, produces = "application/json") public ResponseEntity bar() { final HttpHeaders httpHeaders= new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON..

    Spring message 설정하기

    다국 언어 선택할 때 많이 사용하는 스프링 메시지이다.세션을 많이 사용하겠지만 쿠키 형태로 정보를 저장할 때의 설정이다.필요한 정보만 간단히 모아보았다.언어 변경은 LocaleChangeInterceptor을 통해서 할 수 있게 설정했다. applicationContext.xml message/message servlet-context.xml message.jsp

    Spring에서 Webjars 사용하기

    Spring에서 webjars 적용하는 방법 Maven Repository나 다른 곳에서 webjars를 검색한다. pom.xml에 추가한다. pom.xml org.webjars jquery 3.1.1-1 org.webjars jquery-ui 1.12.1 org.webjars jqgrid 4.7.0 servlet-context에 주소를 매핑한다. servlet-context.xml Java configuration을 사용할 경우에는 아래와 같이 설정한다. WebConfig.java @EnableWebMvc @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandle..

    [Spring Security] 필터 Filter, SecurityFilterChain 이해하기

    [Spring Security] 필터 Filter, SecurityFilterChain 이해하기

    Spring Security를 커스터마이징하기 위해서는 그리고 이해하기 위해서는 아래 필터 체인을 이해하는 것이 좋다.아래 그림은 인터넷에 돌아다니는 Spring Security 호출 그림을 내가 다시 깔끔하게 그려본 것이다. Table 3.1. Standard Filter Aliases and Ordering (https://docs.spring.io/spring-security/site/docs/3.1.x/reference/ns-config.html) AliasFilter ClassNamespace Element or AttributeCHANNEL_FILTERChannelProcessingFilterhttp/ intercept-url @requires-channelSECURITY_CONTEXT_FIL..

    [SpringSecurity] Method 레벨에서 AccessDeniedException 처리하기

    SpringSecurity를 설정하다보니 Method레벨(global-method-security)에서의 AccessDeniedException은 그 전에 설정해놓은 에 걸리지 않는 것을 알게 되었다. 왜 그런가 찾다보니 스택오버플로우[1]에서 답을 찾았는데내 상황이 답을 준것처럼 처리하기에는 정확히 맞지 않는 상황이었다. - StackOverFlow 번역 -access-denied-handler는 AccessDeniedException가 발생할 때 ExceptionTranslationFilter에 의해 사용됩니다.그러나 org.springframework.web.servlet.DispatcherServlet은 먼저 예외 처리를 시도했다.특히 defaultErrorView로 정의 된 org.springf..

    Spring Security custom expression

    Spring Security custom expression

    간단하지만 생각보다 어려운 설정 문제로 인해서 한참 고생을 했다. Spring Security에서 기존에 있는 공통 Expression 외에 별도의 Expression을 만드려고 했는데 이게 제대로 문서도 없고 관련 예제가 있는 곳도 없다. 결국 구글링으로 만들긴 만들었다만 이 간단한 커스텀 개발을 위해서 쓴 시간이 아깝긴 하다. 막상 만들고 보니 고민거리가 있어서 실제로 쓸지도 모르겠다. 이 부분을 위해서 삽질하는 분들에게 도움이 되길 바란다. 우선 custom expression에는 2가지 종류가 있다. 메서드단에 설정하는 MethodSecurityExpression과 웹쪽에 설정하는 WebSecurityExpression이 있다. 이것을 몰라서 Method만 갖고 한참 삽질을 했다. MethodSe..

    Spring Security 관련 레퍼런스 정리

    Spring Security Reference- Spring Security reference 3.2.10http://docs.spring.io/spring-security/site/docs/3.2.10.RELEASE/reference/htmlsingle/html5/#what-is-acegi-security - Hello world guidehttp://docs.spring.io/spring-security/site/docs/current/guides/html5/helloworld-xml.html - spring boot securityhttp://kielczewski.eu/2014/12/spring-boot-security-application/ SlideShare- 해외 자료 (정리 잘 되어있음)ht..

    ReactiveX

    이 글은 ReactiveX - Intro를 번역한 글입니다. Original Text[1] ReactiveX - Intro ReactiveXReactiveX는 observable sequences를 사용하여 비동기(asynchronous) 및 이벤트 기반 프로그램(event-based programs)을 작성하기 위한 라이브러리입니다. 옵져버 패턴(observer pattern)을 확장하여 데이터 및 / 또는 이벤트의 시퀀스를 지원하고 낮은 수준의 스레딩(low-level threading), 동기화(synchronization), 스레드 안전성(thread-safety), 동시 데이터 구조(concurrent data structures,) 및 논 블로킹 I/O(non blocking I/O)과 같은 ..

    리액티브란 무엇인가? (What's in a Name : Reactive)

    이 글은 "What's in a Name : Reactive"를 번역하고 정리한 글입니다. Original Text[1] What's in a Name : Reactive 용어, 뜻 상세 정보, 사용 예 반응형(Responsive) 사용자 인터페이스의 일시적인 동작을 설명할 때 UI가 사용자 입력에 신속하게 반응하거나 응답하는 경우 예) 반응형 웹(Responsive web) 리액션을 보여준다 예) 스프레드 시트, Model-View-Controller 패턴 Spreadsheet 스프레드 시트에서 셀 "A42"의 값을 변경하면 수식에서 A42를 참조하는 다른 모든 셀이 즉시 업데이트되는 예 즉각적인 의미이므로이 행동을 "리액티브"라고 생각할 수도 있음 데이터 바인딩 데이터 바인딩이 되어서 실시간으로 GU..