본문 바로가기

스프링인액션

(8)
스프링 책 읽기(Spring in action) - 스프링 인 액션 후기 약 2달?.. 간 스프링-인-액션 4판을 다 읽었다.. 사실 장점보단 단점이 더 큰 책인것 같다. 장점 web.xml 설정보다는, 자바 설정에 초점을 두었음, web.xml은 쓰기도 어렵고 보기도 힘들다고 생각하기 때문에 이런 점이 좋았음 각 챕터의 도입부에, 다양한 스프링에 대한 세부 설정등이 적혀 있어 좋음 스프링의 시작부터, 서비스 적용까지의 내용이 담겨있음 단점 번역과 검수가 제대로 안되어 있음... *라고 고쳐주세요* 라는 멘트가 그대로 책에 남아있을 정도이고, 그림은 원서와 때때로 다름 챕터의 도입부는 좋지만, 챕터의 뒤로 갈수록 '아 이것도 말해줘야지?!' 라는 느낌이 강할만큼 필요 없는 정보가 많음 자바설정을 잘 알려주다가, 갑자기 후반부에는 xml설정만 알려줌 (귀찮았나?..) 좋은 후기..
스프링 책 읽기(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) - 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) - 7. 고급 스프링 MVC 다양한 스프링 MVC 설정 기본적인 AbstratAnnotationConfigDispatcherServeleteInitializer의 설정이 요구사항을 만족하지 못할 때, 제공하는 방법 DispatcherServelet 설정 사용자 정의하기 추가설정을 위해, 오버라이드 할 수 있는 메소드들(getServletMappings(), getRootConfigClasses(), getServeletConfigClsses() 제외)이 존재함. * customizedRegistration() : AbstratAnnotationConfigDispatcherServeleteInitializer가 서블릿 컨테이너와 DispatcherServelet을 등록한 후, ServletRegistration안에 전달하면서, 호출...
스프링 책 읽기(Spring in action) - 4. 애스펙트 지향 스프링 4. 애스펙트 지향 스프링 AOP 란? - 횡단 관심사의 모듈화, 한 애플리케이션의 여러 부분에 영향을 주는 기능 - 보안, 로깅, 트랜잭션 등 - 장점 : 전체 코드기반에 흩어져있는 것을 응집, 주요 관심사 이외의 것을 모듈화하여 코드가 깔끔해짐 용어 어드바이스 - 애스펙트가 해야할 작업 before - 호출 전**, after 실행 후, after-running - 성공 후, after-throwing - 실패 후**, around - 전후로 간단한 기능 조인 포인트 - 어드바이스 적용 가능한 지점(point) 포인트커트 - 조인 포인트의 영역을 좁히는 일을 함 - 어드바이스 = 무엇, 언제 // 포인트 커트 = 어디서 - 간단하게, 클래스 메소드명 지정부터, 정규표현식 정의 도 가능 애스펙트 - 어..
스프링 책 읽기(Spring in action) - 3.고급 와이어링 3. 고급와이어링 환경과 프로파일 - 같은 dataSource를 지정하는 빈이어도, dev환경, cbr환경, 상용환경이 다를 수 있음 - 스프링은 이러한 환경에 맞는 프로파일을 지정 가능함 환경과 프로파일에 따른 빈설정 @Profile - 빈이 속한 프로파일을 지정하는 어노테이션 @Configuration @Profile("dev") public class DevConfig { @Bean public DataSource dataSource() { return new .... } } =====> dev 프로파일에서 사용하는 dataSource용 컨피그 파일 ===> dev프로파일이 활성화 되지 않을경우, 해당 @Bean 메소드는은 무시된다 @Configuration @Profile("prod") publi..
스프링 책 읽기 1&2 스프링 네가지 주요 전략 * POJO를 이용한, 가볍고 비침투적인 개발 * DI와 인터페이스 지향을 통한 느슨한 결합도 * 애스펙트와 공통 규약을 통한 선언적 프로그래밍 * 애스펙트와 탬플릿을 통한 반복적인 코드 제거 1. EJB 빈생성 package helloejb; import javax.ejb.Stateless; @Stateless(mappedName="helloejb.Hello") public class HelloBean implements Hello { public String sayHello() { return "Hello EJB!"; } } 2. DI를 통해 다양한 종속 객체를, 주입 가능 상호간의 종속관곈나 구체적인 구현방벙를 알 필요가 없이, 객체를 연결 종속객체가 필요로 하는 객체에 부..