본문 바로가기

분류 전체보기

(28)
스프링 책 읽기(Spring in action) - 12. NoSQL 데이터베이스 사용하기 * 스프링 데이터에서도 , MongoDB, Neo4j, Redis등 여러 NoSQL 데이터베이스를 지원한다. 자동 저장소 뿐만 아니라 템플릿 기반의 데이터 액세스 및 매핑 애너테이션도 포함한다 MongoDB의 유지성 도큐먼트 MongoDB : 오픈소스 도큐먼트 데이터(비정규화 된 구조의 정보) 베이스 -> 스프링에서도 사용 가능 - 사용하는 세 가지 방법 객체 도큐먼트 매핑을 위한 애너테이션 MongoTemplate을 사용한 템플릿 기반의 데이터베이스 액세스 자동 런타임 저장소 생성 스프링 데이터 JPA와 달리, 스프링 데이터 MongoDB는 자바 객체를 도큐먼트에 매핑하기 위한 애너테이션을 제공. 또한 MongoDB는 다수의 일반 도큐먼트 처리 태스크를 위한 템플릿 기반 데이터 액세스를 제공 Mong..
스프링 책 읽기(Spring in action) - 11. ORM을 통한 데이터 퍼시스팅 애플리케이션이 복잡해짐에 따라, 퍼시스턴스와 관련된 요구사항도 복잡해짐 ==> 더 복잡하고 정교한 기능이 필요 * 지연 로딩(lazy loading) : 관련성 있는 객체 전체를 한번에 가져오고 싶지 않을 때, 필요로 하는 실제 데이터만 불러오는 기능. ex) 객체 안의 내부객체는 제외하고 불러오기 * 조기 인출(eager fetching) : 지연 로딩의 반대 개념. 한번의 쿼리로 전체 객체를 가져오는 기능 // ex) 불러오기 한번으로, 객체와 내부객체의 정보를 모두 가져옴 * 캐스케이딩(cascading) : 때때로 데이터베이스 테이블을 변경했을 때, 다른 테이블의 값도 변경해야 하는 기능 // ex) 객체A를 삭제할 때, 연관된 B객체도 같이 삭제 => 이러한 서비스를 제공하는 프레임 워크를 '객..
스프링 책 읽기(Spring in action) - 10. 스프링과 JDBC를 사용하여 데이터베이스 사용하기 스프링의 데이터 액세스 철학 스프링 - 인터페이스 대상 객체 지향 코딩 지향 -> 서비스 객체가 바로 저장소로 접근하지 않음 -> 인터페이스를 통함 서비스 객체(Service object)는 저장소 인터페이스(Repository interface)를 통해서 저장소에 액세스한다. 특정 데이터 액세스 구현에 밀착되어 있지 않으므로, 쉽게 테스트 할 수 이다. 연결하지 않고도 테스트가 나가능하며, 데이터에 의한 테스트 실패도 발생하지 않는다. 데이터 액세스 계층은 퍼시스턴스기술에 상관 없이 액세스, 오직 관련 데이터 액세스 메소드만 인터페이스로 노출 -> 유연한 설계 가능 스프링의 데이터 액세스 예외 계층 구조 SQLException을 발생시키는 흔한 문제 -> 데이터베이스 연결 불가 / 쿼리 문법 오류 / ..
스프링 책 읽기(Spring in action) - 9. 웹 애플리케이션 보안(스프링 시큐리티) 웹 보안의 3요소 Principal - 사용자 : 현재 서비스에 접근하기 위한 주체 Authentication - 인증 : 사용자를 확인하는 과정 Authorization - 인가 : 확인 된 사용자에 대한 권한 검사 및 부여 → Spring Security는 이 3가지를 쉽게 사용가능하며, 확장성 또한 매우 높음 https://bob-full.tistory.com/6 스프링 시큐리티 시작하기 모듈 웹요청 필터 * 스프링 시큐리티에는 다양한 보안의 관점을 제공하기 위한 서블릿 필터들을 제공 * DelegatingFilterProxy : 스플링 애플리케이션 컨텍스트의 위임된 필터 빈을 처리하기 위한 프록시 필터 public class SecurityWebInitializer extends AbstractS..
스프링 책 읽기(Spring in action) - 7. 고급 스프링 MVC 다양한 스프링 MVC 설정 기본적인 AbstratAnnotationConfigDispatcherServeleteInitializer의 설정이 요구사항을 만족하지 못할 때, 제공하는 방법 DispatcherServelet 설정 사용자 정의하기 추가설정을 위해, 오버라이드 할 수 있는 메소드들(getServletMappings(), getRootConfigClasses(), getServeletConfigClsses() 제외)이 존재함. * customizedRegistration() : AbstratAnnotationConfigDispatcherServeleteInitializer가 서블릿 컨테이너와 DispatcherServelet을 등록한 후, ServletRegistration안에 전달하면서, 호출...
스프링 책 읽기(Spring in action) - 6. 웹 뷰 렌더링 뷰 리졸루션 이해하기 * 컨트롤러에서는, 직접적으로 브라우저에 렌더링하는 HTML을 생성해 내는 메소드가 없음. 대신, 렌더링을 위한 데이터를 모델에 담아 뷰에 전달하는 역할을 함. 뷰의 논리적 이름만 전달 * 이렇게 컨트롤러의 요청+처리로직 // 뷰의 뷰-렌더링 분리는 스프링 MVC의 중요한 기능 * 실제로 스프링이 모델을 렌더링하여 구현되는 뷰를 결정하는 것이 '뷰 리졸버(View Resolver)' ViewResolver & View인터페이스 public interface ViewResolver { View resolveViewName(String viewName, Locale locale) throws Exception; } public interface View { String getConten..
스프링 책 읽기(Spring in action) - 5. 스프링 MVC 시작하기(2) 요청입력받기 스프링 MVC는 클라이언트가 데이터를 전달해줄 몇 가지 방법을 제공함 * 쿼리파라미터, 폼 파라미터, 패스 변수 쿼리파라미터 입력받기 * 이전 글에서 사용한 방식은, 코드 내에 1000이나 5000이 직접 적혀있었고, 클라이언트는 이를 바꾸지 못하는 구조였다. 만약 4천원~ 5천원 사이인 커피의 목록을 알고싶은 사용자는 어떻게 해야할까? => 클라이언트의 GET 요청에서, min과 max의 파라미터값을 받으면 됨 @RequestMapping(method = RequestMethod.GET) public List coffees( @RequestParam(value="min", defaultValue = "1000") int min , @RequestParam(value="max", defaul..
스프링 책 읽기(Spring in action) - 5. 스프링 MVC 시작하기(1) 스프링 MVC 프레임워크. * 마치 '골드버그 게임' 처럼, 다양한 내리막, 시소 등의 자애물을 통과하는 것 처럼, 스프링은 '요청'을 '디스패치 서블릿', '핸들러 매핑', '컨트롤러, '뷰 리졸버' 등으로 이동시킴 스프링 MVC를 이용한 요청 추적 - 웹브라우저에서 링크 클릭 혹은 폼을 서브밋할 때, 요청을 처리하기 위한 작업이 수행됨. 1. 요청이 브라우저에서 떠나면서 사용자의 요구 내용 전달 -> DispatcherServelet 2. DispatcherServlet에서, 다음 요청이 가야할 곳을 찾기위해 핸들러 매핑에게 도움 요청 -> 컨트롤러 선택 3. 선택된 컨트롤러에, DispatcherServlet가 요청을 보냄 -> 요청은 페이로드로 떨굼 -> 이후 컨트롤러의 처리 시간동안 대기 -> ..