공부27 Spring Security Spring Security란? 사용자 정의가 가능한 인증 및 권한 부여가 가능한 프레임워크 Spring을 사용한 애플리케이션에서 사실상 표준 전적으로 servlet filter를 기반으로 한다. Filter는 서블릿에서 오고 가는 요청과 응답을 intercept(가로채기)할 수 있고 전처리 후처리가 가능하다. Browser - request -> servletRequest -> filter -> Servlet (요청 과정) Servlet -> filter -> servletResponse -> response -> Browser (응답 과정) 예시) controller package com.naver.daehwan; import org.springframework.stereotype.Controller.. 2020. 3. 30. Spring Web Form 1. Data Binding - request parameter들은 어떻게 해당 오브젝트로 옮겨질까 Naive solution - @RequestParam annotaion을 사용하여 메서드 매개 변수와 bind 해준다. ex) @RequestMapping("/deget") public String doGet( @RequestParam("name") String name){... } -> 이런 식으로 받은 매개변수를 객체를 만들어 set 해주는 방식 Spring Data Binding - form에서 오는 매개변수를 자동으로 객체에 바인딩시켜준다. ex) @RequestMapping(value="/docreate", method=RequestMethod.POST) public String doGet(Em.. 2020. 3. 25. MVC(Model-View-Controller) Spring MVC Framework 웹 애플리케이션 개발을 위한 모델 뷰 컨트롤러 아키텍처를 제공한다. Model - 애플리케이션 데이터를 캡슐화하고 일반적으로 POJO(순수 자바 객체)로 구성된다.. View - 모델 데이터를 렌더링하고 일반적으로 HTML 출력을 생성한다. Controller - 사용자 요청을 처리하고 적절한 모델을 작성하고 렌더링을 위해 View로 전달한다. 1. 개요 Dispatcher servlet 사용자의 요청을 맨 먼저 받는다.(Front Controller로서 작동한다.) 요청을 적절한 Controller에게 전달해주는 역할 (애플리케이션으로 들어오는 모든 요청을 intercept 하고 Handler(Controller)에 디스패치(전달)한다.) 요청을 처리하기 위해 Co.. 2020. 3. 17. DB 연동(with Spring JDBC) 1. Application Architecture - 서버와 클라이언트 사이에 TCP라는 프로토콜이 존재하여 커넥션을 만들어주어 통신을 가능하게 해 준다. - 같은 개념으로 서버와 DB사이에도 커넥션을 만들어주어야만 통신이 가능하다. 2. Data Access Layer - 요구되는 라이브러리 JDBC Template (Spring에서 제공되는 클래스): spring-jdbc DataSource (Apache): commons-dbcp JDBC Driver: mysql (mySQL)-connector-java - JDBC Template를 사용하려면 DataSource가 주입되어야 한다. ex) A대학의 DataSource를 만들어서 JDBC Template에 주입하면 A대학 DB에 접근하게 된다. - .. 2020. 3. 9. 관점 지향 프로그래밍(AOP, Aspect Oriented Programming) Layer 안에 부가 기능들을 각 각 삽입한 단순 접근의 단점 비즈니스 로직과 로깅 기능을 혼합 관심사의 분리 원칙을 위반 복잡성과 상호 의존성 향상 느슨하게 결합 된 디자인 방지 반복되는 코드로 수정이 어려워진다. Spring AOP - AOP는 부가 기능(Logging, Transaction...)을 메인 프로그램의 비즈니스 로직과 분리 -> Spring Framework가 부가 기능들을 핵심 기능에 적용시켜준다. AOP-Weaving app function 호출(Caller -> Proxy) 횡단 관심사(cross-cutting concern) 실행 (Proxy -> Aspect) app function 호출(Proxt ->Aspect -> Target) app function에서 return(Ta.. 2020. 3. 7. 의존성 주입(Dependency Injection) 객체 의존성 public class PetOwner{ private AnimalType animal; public PetOwner() { this.animal = new Dog(); } } PetOwner 객체는 AnimalType 객체 (이 경우 Dog)에 의존 PetOwner 객체는 AnimalType 객체의 생성을 제어 PetOwner와 AnimalType 객체 사이가 연결됨 AnimalType 객체를 변경하면 PetOwner 객체가 변경 PetOwner와 Dog는 강하게 결합이 되어있다 = tight coupling -> 다른 경우를 적용하려면 소스코드를 바꿔야 하는 상황 (만약 Cat을 animal에 넣으려고 하면 PetOwner 코드를 바꿔줘야 한다. -> 다른 상황마다 코드를 바꿔야되는 상황.. 2020. 3. 5. 이전 1 2 3 4 5 다음