본문 바로가기
반응형

전체 글95

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.
Mac에서 Apache와 Tomcat 연동하기 mac환경에서 apache와 tomcat을 연동하고자 한다. Apache를 별도로 설치하고자 했지만 Mac에는 이미 포함되어 있다. 세팅 환경 MacOS Sierra 10.12 apachectl -v 명령어로 버전확인 Apache 2.4.23 Tomcat 8.5.11 localhost:8080 처럼 직접적으로 Tomcat을 띄우고 8080포트에 접근해서 웹을 개발해봤는데 특정 도메인을 local로 인식하도록 한 후 tomcat connector로 연동하는 작업을 해보자. 먼저 test.com 이라는 도메인을 127.0.0.1로 인식하도록 한다. 1) Apache Reverse Proxy 설정 /etc/hosts 수정 sudo vim /etc/hosts ## # Host Database # # localh.. 2020. 1. 8.
자바스크립트(Javascript) 객체와 배열 객체는 여러 값들을 결합시킨 복합 타입. 객체생성 var emp = {} var point = {x:0, y:0} var circle = {x:point.x, y:point.y, radius:2} var hh = { "name": "james" } var a = new Date(); 프로퍼티 . 연산자로 접근할 수 있다. [소유한 객체].[프로퍼티 이름] 생성 객체에 새로운 프로퍼티를 손쉽게 생성할 수 있다. var book = {} book.title = "spring 4.0 book" 열거 for/in loop로 프로퍼티 존재 확인 없는 프로퍼티는 undefined값. 하지만, book.a = undefined; 의 경우엔 a라는 프로퍼티는 존재하는데 값이 undefined. if (book.a) {.. 2020. 1. 8.
자바스크립트(Javascript) 함수범위와 클로저 함수 유효범위와 클로저 기본적으로 자바스크립트는 함수에 대한 유효범위 만 제공. 자바스크립트의 함수의 바디는 전역 유효 범위랑은 다른 지역 유효 범위 상에서 실행됨. 어휘적 유효범위 함수는 동적이라기 보단 어휘적으로 유효 범위가 정해진다. 유효 범위 : 접근할 수 있는 범위를 의미 함수가 실행되는 유효범위가 아니라 정의되어있는 유효범위 안에서 실행됨. 정의될 때, 현재의 유효 범위 체인이 저장된다. 함수 내부 상태 중 일부가 됨. 함수 하나를 선언하면 함수에서 접근할 수 있는 유효범위는 함수를 포함한 객체의 모든 프로퍼티들(전역객체)이다. 함수 내에 중첩된 함수의 경우 이를 포함한 함수, 상위 객체들이 접근할 수 있는 유효범위가 된다. 유효범위체인이 고정되어도 유효 범위 체인 안에 정의된 프로퍼티는 변경.. 2020. 1. 8.
Javascript 함수(function)에 대하여 Function.. 함수의 암묵적 전달인자. 객체의 메서드로 정의될 때, 함수의 암묵적 전달인자로 전달된다? 정의와 호출 전달인자의 제한이 없다. 명시된 전달인자보다 많으면 무시된다. 명시된 전달인자를 적지않으면 undefined값이 할당됨 물론 위처럼 해서 정상작동 하는 경우가 있는 반면에, 아닌 경우도 있다. 함수 리터럴 function test(x) { ... } var test = function(x) { ... } 함수 리터럴을 이용하여 정의할 수도 있음. 이름을 붙이지 않아도 되는 익명 함수일 때 적합. 선택적으로 함수 이름을 명명하는 것도 허용 (Javascript 1.5 이전 버전은 제대로 동작 안할 수 있음) 익명 함수인데 재귀호출을 사용할 경우 쓰임. var test = function.. 2020. 1. 8.
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.