본문 바로가기

스프링

(18)
스프링 책 읽기(Spring in action) - 스프링 인 액션 후기 약 2달?.. 간 스프링-인-액션 4판을 다 읽었다.. 사실 장점보단 단점이 더 큰 책인것 같다. 장점 web.xml 설정보다는, 자바 설정에 초점을 두었음, web.xml은 쓰기도 어렵고 보기도 힘들다고 생각하기 때문에 이런 점이 좋았음 각 챕터의 도입부에, 다양한 스프링에 대한 세부 설정등이 적혀 있어 좋음 스프링의 시작부터, 서비스 적용까지의 내용이 담겨있음 단점 번역과 검수가 제대로 안되어 있음... *라고 고쳐주세요* 라는 멘트가 그대로 책에 남아있을 정도이고, 그림은 원서와 때때로 다름 챕터의 도입부는 좋지만, 챕터의 뒤로 갈수록 '아 이것도 말해줘야지?!' 라는 느낌이 강할만큼 필요 없는 정보가 많음 자바설정을 잘 알려주다가, 갑자기 후반부에는 xml설정만 알려줌 (귀찮았나?..) 좋은 후기..
스프링 책 읽기(Spring in action) - 17. 스프링 메시징 * 이전 장에서 알아본, RMI. Hessian, Burlap, HTTP invoker등은, 애플리케이션 간의 동기식(synchoronous) 통신. * 하지만 애플리케이션에는 동기식만 존재하지는 않음. 비동기식(asynchronous) 메시징 이용 => JMS(Java Message Service), AMQP(Adavanced Message Queuing Protocol)등을 사용할 수 있다 1. 비동기식 메시징에 대한 간단한 소개 * 동기식의 경우에는, 원격 메소드를 호출하면 클라이언트는 메소드의 완료까지 기다린다. 심지어 원격메소드가 아무것도 반환하지 않아도 서비스가 끝나지 않으면 클라이언트는 무한 대기 상태 * 비동기식의 경우, 클라이언트는 서비스가 메시지를 처리하는 것을 기다리지 않아도 된다. ..
스프링 책 읽기(Spring in action) - 15. 원격 서비스 사용하기 * 스프링에서는, 다른 서비스에 원격으로 액세스하기 위해 통신을 해야한다. 이러한 과정에서 몇 가지의 리모팅 기술을 사용한다 1. 스프링 리모팅 개요 리모팅 : 클라이언트 애플리케이션과 서비스 간의 대화. 클라이언트 측에서 기능이 필요하면, 애플리케이션이 그 기능을 제공 가능한 다른 시스템에 접촉을 시도 다른 애플리케이션과 서비스의 통신은, 클라이언트에서 호출하는 원격 프로시저 호출(RPC, Remote Procedure Call)로 시작 됨. 표면적으로 메소드 호출과 유사함. 로컬메소드 호출과는, 인접성에서 차이점을 보임 -> 근거리(대화) vs 원거리(전화통화) 스프링은 여러 RPC 모델에 대해, 리모팅을 지원해줌 * 해당 RPC모델에 관계 없이, 모든 모델에 대해 지원 기능에 한 가지 공통된 테마가..
스프링 책 읽기(Spring in action) - 14. 시큐리티 메소드 어노테이션을 활용하는 시큐리티 메소드 스프링에서 가장 일반적으로 사용되는 보안방식은, 어노테이션을 이용하여 보안을 적용하는 방식 스프링 시큐리티 - @Secured JSR-250 - @RolesAllowed Expression-driven 어노테이션 - @PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter -> @Secured, @RolesAllowed는 간단한 어노테이션, 이 외의 @PreAuthorize, @PostAuthorize, @PreFilter, @PostFilter는 보안 규칙에 더 많은 유연성을 보장함 @Secured 어노테이션을 통한 메소드 보안 @EnableGlobalMethodSecurity : 스프링 시큐리티의 메소드 어노테이션 기반 시..
스프링 책 읽기(Spring in action) - 13. 데이터 캐싱하기 캐싱(caching) - 자주 필요한 정보를 저장하는 방법으로 해당 정보가 필요할 때 사용될 수 있게 함, 스프링은 캐시솔루션을 구현하지 않지만, 다양한 캐싱 구현체와 통합된 캐싱을 위한 선언적 지원을 제공 캐시 지원하기 스프링의 캐시 추상화 지원 -> 애너테이션 주도 캐싱 or XML 선언 캐싱(생략) @Caheable, @CacheEvict : 해당 애너테이션을 사용하여, 메소드를 애너테이션하는 것이 가장 일반적인 방법 * 빈의 캐싱 애너테이션 적용 전에는, 스프링의 애너테이션 주도 캐싱 지원을 사용해야함 @Configuration @EnableCaching // 캐싱 활성화 public class CachingConfig { @Bean public CacheManager cacheManager() ..
스프링 책 읽기(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..