Programming/Spring Framework8 Spring Security에 관하여 #1 예전에 Spring Security 스터디를 하면서 정리한 글이다. 총 두편에 걸쳐서 작성했고, 1편부터 시작한다. 1. 웹 보안과 스프링 시큐리티 웹 어플리케이션을 개발할 때 항상 보안 관련 부분을 신경써야한다. 악의적인 접근에 제대로 대처하지 못한다면 서비스가 정상적으로 운영되지 않을 것이며, 개인정보 등의 데이터 유출이 발생하면서 신뢰도가 떨어질 것이다. 이는 유저 이탈을 야기할 수 있기 때문에 서비스를 개발하고 운영하는데 있어서 반드시 살펴봐야한다. 스프링 프레임워크에서는 이를 Spring Security 라는 이름으로 쉽게 추가할 수 있도록 환경을 제공한다. 보안에서는 크게 인증/인가 두 가지 측면에서 살펴 볼 수 있다. 인증(Authentication) : 현재 사용자가 누군지 확인하는 과정... 2020. 5. 24. Spring 빈/컨테이너 생명주기 (Lifecycle) Spring 컨테이너 생명주기 (Life Cycle) 생성, 빈 설정, 사용, 소멸 순으로 구성되어있다. AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(); // 빈 추가로 등록 ctx.register(); // 갱신해야 반영됨 ctx.refresh(); // 소멸, 빈도 함께 ctx.close() // JVM소멸시 자동으로 소멸되게끔 ctx.registerShutdownHook() Bean 생명주기 (Lifecycle) 객체 생성 - 초기화 - 사용 - 소멸 순으로 유지된다. 스프링 컨테이너에 의해 객체가 생성되고 초기화와 소멸의 과정을 거친다. 각 초기화와 소멸을 구현하는 방법에는 각각 3가지가 존재한다... 2020. 5. 24. Spring AOP Proxy에 관하여 AOP Proxy Spring AOP는 두가지 Type의 Proxy를 지원하고 있다. JDK Dynamic Proxy CGLIB Proxy 기본적으로 Spring AOP는 JDK Dynamic Proxy를 사용한다. 이외에 CGLIB Proxy방식도 사용 가능하다. 모델이 인터페이스로 구현되어 있지 않으면 CGLIB을 기본으로 사용한다. JDK Dynamic Proxy J2SE 1.3 부터 제공하는 기능. 메서드 요청을 인터셉트해서 추가적인 행동을 끼워넣을 수 있다. _인터페이스에 대한 Proxy만 지원_하기 때문에 클래스에 대한 Proxy를 지원하지 않는다. Proxy기능을 사용하기 위해 인터페이스를 사용해만 하는 제약사항이 있다. 구현되어 있는 애플리케이션에 Proxy기능을 추가할 때 클래스로 구현되.. 2020. 5. 24. Spring RestTemplate HTTP기반의 통신하는 경우 스프링에서 이를 위해 RestTemplate를 제공 RestTemplate은 동기적인 Http Client 클래스 RESTfult HTTP Server와의 커뮤니케이션을 간단하게 해준다. HTTP Connection으로 작동되며, URL과 결과를 제공하는 코드가 있다. 기본 RestTemplate은 HTTP connection을 맺기 위해 기본 JDK에 의존한다. 개발자는 setRequestFactory 속성을 통해 Apache HttpComponents, Netty, OkHttp 등 같이 다른 HTTP 라이브러리로 바꿀 수 있다. 1. RestTemplate 기본 사용법 RestTemplate 객체 생성 접근 메서드 사용해서 결과 받음 RestTemplate template.. 2019. 11. 27. Spring 트랜잭션에 대해 알아보자 1. 트랜잭션? 여러 과정을 하나의 행위로 묶을 때 사용된다. 여러 단계를 수행했을때, 하나라도 실패하면 모두 취소되어야 한다. 이렇게 함으로써 데이터의 무결성을 보장한다. 모두 반영하거나 반영하지 않음. 2. 스프링의 트랜잭션 지원 선언적 트랜잭션 지원. 트랜잭션의 범위를 코드 수준으로 정의 가능, 설정 파일 or 애노테이션을 이용한 규칙 및 범위 설정 가능 2.1. PlatformTransactionManager 트랜잭션은 PlatformTransactionManager 인터페이스를 이용해 추상화 했다. DB연동 기술에 따라 각각의 구현 클래스가 제공된다. 실제 트랜잭션 처리할 때 PlatformTransactionManager를 사용하진 않는다. 선언적 트랜잭션 방식으로 처리한다. 2.2. JDBC.. 2019. 11. 25. Spring MVC 1. Spring MVC 기본 프로젝트 생성해보기 STS에서 생성하는 순서 Dynamic Web Project 생성 Maven Project 활성화 web.xml 추가 후 Servlet 설정 1.1. Web.xml 추가 web.xml이 없는 경우 프로젝트 우클릭 - java EE Tools - Generate Deployment Descriptor Stub 클릭 src 폴더 내부에 알아서 해줌 1.2. Servlet 설정 web.xml 생성 후 서블릿 관련 설정을 추가해야 함. Servlet dispatcher 정의 init-param 으로 contextConfigLocation 정의. param-value 에는 config xml파일 경로를 입력. 상대경로나 classpath 입력 가능 Servlet .. 2019. 11. 22. Spring AOP (Aspect Oriented Programming) Spring AOP(Aspect Oriented Programming) 개요 관점 지향 프로그래밍(AOP)은 문제를 바라보는 관점을 기준으로 프로그래밍 하는 기법이다. 공통된 관심사항을 모듈화하여 여러 코드에 쉽게 적용할 수 있도록 도와준다. 이를 구현하기 위해 기존의 OOP 방식으로는 한계가 있어 (상속, 위임 등으로 해결하려 하지만 코중복된 코드 등의 한계 발생) AOP개념이 도입되었다. 그렇기 때문에 OOP와는 반대되는 개념이 아닌 보완을 해주는 개념이라고 볼 수 있다. Spring IoC 컨테이너에 의존하지 않기 때문에 필요하지 않으면 사용하지 않아도 무방하다. 이러한 특성 때문에 핵심 비즈니스 로직을 변경하지 않고도 공통 관심 기능을 추가, 적용할 수 있다. 공통 관심 기능은 주로 로깅, 트랜잭.. 2018. 10. 30. Spring Boot로 Gradle + SpringMVC + JSP 적용하기 Spring Boot를 이용해서 JSP를 사용하려고 할 때, 별도의 작업을 해야만 합니다. Spring Boot를 사용하는 것부터 JSP페이지를 출력하는 과정을 정리해봅니다. Spring Initializer http://start.spring.io/ Spring Boot Initialize 하는 사이트입니다. 원클릭으로 기본적인 프로젝트를 zip파일 형태로 생성할 수 있습니다. 여기서는 gradle, Spring Boot 1.3.6버전을 선택했고 SpringMVC로 구현할 것이기 때문에 Dependencies에는 Web을 추가했습니다. Generate Project 클릭하면 [Artifact name].zip 파일을 다운받을 수 있습니다. * JPA나 MongoDB, Redis, OAuth 등 다양한 .. 2016. 7. 12. 이전 1 다음