Spring|Spring-boot117 Spring BeanDefinition 레거시 애플리케이션을 접하다 보면 설정을 찾느라 매우 고생하는 경우가 많다. 실제 여기저기서 생성되는 Bean들을 한눈에 파악하기 매우 힘든 상황이 존재했다. 이 경우 Spring BeanDefinition은 우리에게 Bean에 대한 메타정보들과 등록된 빈을 파악할 수 있도록 도와줄 수 있다. 스프링은 객체지향 프로그래밍을 보조해주는 좋은 프레임워크로 스프링 컨테이너가 관리하는 Bean들을 생성하기 위한 설정 정보도 추상화와 구현체로 나누어 읽어 들이고 생성한다. 이때 BeanDefinition을 빈 설정 메타정보라 한다. 메타정보라 하면 데이터를 위한 데이터라는 뜻을 가지고 있다. @Test @DisplayName("BeanDefinition 확인") void checkBeanMetaData(){ Ge.. 2021. 12. 15. Validation 보호되어 있는 글 입니다. 2021. 6. 10. [Spring boot] AOP 활용예제 2022.01.27 - [Spring|Spring-boot/Spring AOP] - Spring AOP Spring AOP 사전 지식 빈 후처리기 @Aspect Aspect 기억 되살리기 @Aspect를 어드바이저로 변환해서 저장하는 과정 1. 스프링 애플리케이션 로딩 시점에 자동 프락시 생성기(AnnotationAwareAspectJAutoProxyCreator) 호출 2. chinggin.tistory.com 2022.01.29 - [Spring|Spring-boot/Spring AOP] - Spring AOP (2) Spring AOP (2) 설정 사항 - org.aspectj 패키지 관련 기능은 aspectjweaver.jar 라이브러리가 제공하는 기능이다. 따라서 해당 라이브러리 의존관계의 추가.. 2021. 6. 9. Spring Security(4) 빠르게 스프링 시큐리티를 적용시킬 때는 UserDetails와 UserDetailsService를 사용합니다. 왜냐하면 이 두개의 인터페이스만 구현하면 스프링 시큐리티가 나머지는 쉽게 사용할 수 있도록 도움을 주기 때문입니다. 그 이후 설정은 차차 적용시키면서 구현하는 편입니다. 다음은 UserDetails Interface입니다. /* * Copyright 2004, 2005, 2006 Acegi Technology Pty Limited * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtai.. 2021. 4. 4. Spring Transaction(2) 보호되어 있는 글 입니다. 2021. 4. 3. Spring Transaction 기본적으로 트랜잭션이라 하면 더 이상 쪼갤 수 없는 최소의 작업 단위라는 개념이 존재한다. 따라서 트랜잭션 경계 안에서 진행된 작업은 commit()을 통해 모두 성공하던지 혹은 rollback()을 통해 모두 취소되어야 한다. 하지만 이밖에도 좀 더 세밀하게 트랜잭션의 동작 방식을 제어할 수 있는 몇 가지 조건이 존재한다. 트랜잭션 전파 transaction propagation란 트랜잭션의 경계에서 이미 진행 중인 트랜잭션이 있을 때 혹은 없을 때 어떻게 동작할 것인가를 결정하는 방식을 말한다. 예를 들어 다음과 같은 코드가 있다. A의 트랜잭션이 진행 중이면 B의 코드는 어떤 트랜잭션 안에서 동작해야 할까? 1) A에서 트랜잭션이 실행 중이므로 B의 코드는 새로운 트랜잭션을 만들지 않고 참여하여 성.. 2021. 4. 3. Spring Security Basic BasicAuthenticationFilter - 기본적으로 서버에서 내려줄 수 없는 경우에 사용합니다. 최근에 SPA 기반의 개발 시 클라이언트에서 자바스크립트를 통해 로그인폼을 만들기 때문에 서버를 통해서 페이지 리다이렉션을 통해서 로그인을 하는 것이 아니기 때문에 BasicAuthentication을 사용해야 합니다. 다음과 같이 설정합니다. @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .authorizeRequests().anyRequest().authenticated() .and() .httpBasic() ; } 서버에 보호되는 서비스가 존재한다고 했을 때 예를 들어 G.. 2021. 3. 28. Spring Security Form Login 스프링 시큐리티는 DelegatingFilterProxy를 사용해 추상화된 필터를 사용합니다. 그중 Form으로 Login 하는 경우를 살펴봅니다. Form으로 login을 하는경우에는 UsernamePasswordAuthenticationFilter를 사용합니다. 이때 Token을 발급해주며 해당 토큰으로 원하는 페이지에 접근할 수 있습니다. 보통 새로운 SecurityConfig클래스에 WebSecurityConfigurerAdapter를 상속받아서 security의 설정 파일을 만들어 줍니다. dependencies { compile 'org.springframework.security:spring-security-web:4.2.2.RELEASE' compile 'org.springframework.. 2021. 3. 28. Spring Security(3) Spring Security를 사용하는 프로젝트에서 로그인을 한다는 것은 Authentication 객체가 SecurityContext에 존재하며 authenticated의 변수가 true의 값을 가지고 있을 때를 말합니다. 저번에 살펴봤던 spinrgSecurity필터들 중 Authentication을 검사하는 필터가 존재합니다. 이러한 필터들은 다양한 인증방법을 제공합니다. 실제 구현체들을 인증 토큰이라고 합니다. 예를 들어 BasicFileter를 거치게 되어 정상적으로 인증이 된다면 Basic Token을 제공해주고 JWT, Bearer토큰 등 다양한 정책을 가진 필터들이 존재합니다. 이들 필터가 하는 일은 AuthenticationManager 를 통해 Authentication을 인증하고 그 .. 2021. 3. 28. Spring Security(2) Spring Security 서블릿 컨테이너 Tomcat과 같은 웹 애플리케이션을 서블릿 컨테이너라고 부릅니다. 이러한 애플리케이션은 기본적으로 필터와 서블릿으로 구성되어 있습니다. 톰캣을 웹 서버와 서블릿 컨테이너를 동시에 포함하고 있기에 서버 역할도 내장되어있긴 합니다. 순서를 보면 request가 threadlocal로 실행되어서 filterchain을 거쳐서 실제 DispatchServlet에 들어오고 이러한 컨테이너에서 서블릿의 생성과 종료를 위임받아 실행됩니다. 그래서 스프링 시큐리티는 DelegatingFilterProxy라는 필터를 만들어 메인 필터 체인에 끼워 넣고, 그 아래 다시 SecurityFilterChain 그룹을 등록합니다. 본래의 메인 필터를 반드시 통과해야만 서블릿에 들어갈.. 2021. 3. 21. 이전 1 ··· 4 5 6 7 8 9 10 ··· 12 다음