Devlopment/Spring

    Spring DI(Dependency Injection) - 비교 및 방법에 대해

    Dependency Injection 의존성 주입의 방법은 총 3가지가 있다. Constructor Injection Spring 4.3에서부터는 단일 생성자의 경우 Autowired Annotation 불필요함 @Service public class Atin { private final Story story; @Autowired public Atin(Story story) { this.story = story; } } Field Injection ... @Service public class Atin { @Autowired private final Story story; } Setter Injection ... @Service public class Atin { private Story story; @..

    Spring Boot.

    스프링 부트(Spring Boot)공식 홈 - https://spring.io/projects/spring-boot스프링 기반으로 상용제품 수준의 단독 실행형 애플리케이션을 복잡한 과정없이 개발할 수 있도록 하는 것 History2012.10.17https://jira.spring.io/browse/SPR-98882013.10.06Spring Boot 0.5.0.M1 Phil Webb, Dave Syerhttps://spring.io/blog/2013/08/06/spring-boot-simplifying-spring-for-everyone2014.04.01Spring Boot 1.0 GA Released, Phil Webbhttps://spring.io/blog/2014/04/01/spring-boot-..

    SPRING FRAMEWORK 5의 변화

    기본 JDK 지원 버전 업데이트Spring Framework 5.0 최소 요구 사항 : Java 8전체 Spring 프레임 워크 5.0 코드베이스는 Java 8에서 실행 Core Framework RevisionJava 8 reflection 기반으로 Spring Framework 5.0의 메소드 매개 변수에 효율적으로 액세스 가능코어 스프링 인터페이스는 이제 Java 8 기본 메소드를 기반으로 선택적 선언을 제공@ Nullable 및 @ NotNull 주석은 nullable 인수 및 반환 값을 명시적으로 표시런타임에 NullPointerExceptions 대신 컴파일 타임에 Null 값을 처리 가능 Core Container Updates선택적 주입 포인트에 대한 지표로 @Nullable 어노테이션 지..

    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..