본문 바로가기

스프링

(18)
스프링 책 읽기(Spring in action) - 7. 고급 스프링 MVC 다양한 스프링 MVC 설정 기본적인 AbstratAnnotationConfigDispatcherServeleteInitializer의 설정이 요구사항을 만족하지 못할 때, 제공하는 방법 DispatcherServelet 설정 사용자 정의하기 추가설정을 위해, 오버라이드 할 수 있는 메소드들(getServletMappings(), getRootConfigClasses(), getServeletConfigClsses() 제외)이 존재함. * customizedRegistration() : AbstratAnnotationConfigDispatcherServeleteInitializer가 서블릿 컨테이너와 DispatcherServelet을 등록한 후, ServletRegistration안에 전달하면서, 호출...
스프링 책 읽기(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가 요청을 보냄 -> 요청은 페이로드로 떨굼 -> 이후 컨트롤러의 처리 시간동안 대기 -> ..
스프링 책 읽기(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를 통해 다양한 종속 객체를, 주입 가능 상호간의 종속관곈나 구체적인 구현방벙를 알 필요가 없이, 객체를 연결 종속객체가 필요로 하는 객체에 부..
Kotlin + Spring boot security + thymeleaf 로그인 구현(3) 2019/03/28 - [SW개발] - Kotlin + Spring boot security + thymeleaf 로그인 구현(1) 2019/04/01 - [SW개발] - Kotlin + Spring boot security + thymeleaf 로그인 구현(2) 이전 글까지, 따라왔다면 여기까지 만들어졌을겁니다. 이번 글에서는 Spring Security를 통해, 이전 글에서 만든 Provider를 빈으로 등록하고, 이를 통해 인증을 처리하는 config를 구현하겠습니다 1. WebSeurityConfigurerAdpater 구현 이 인터페이스는, 스프링 시큐리티에서 가장 핵심 적인 역할을 합니다. AuthenticationManagerBuilder : AuthenticationProvider 설정 W..
Kotlin + Spring boot security + thymeleaf 로그인 구현(2) 2019/03/28 - [SW개발] - Kotlin + Spring boot security + thymeleaf 로그인 구현(1) 프로젝트가 무사히 생성 됐다면, 위 화면처럼 됐을겁니다. 간단한 로그인 구현은 이렇게 만들어진 프로젝트에서 해보겠습니다. 1. UserDeatails 인터페이스 구현 Security에서 사용할 UserDetails객체를 구현합니다. 이는 사용자의 정보를 담아주는 역할을 합니다. class MyUserDetail(val id : String, val pw : String, val role : String) : UserDetails { override fun getAuthorities(): MutableCollection { val authorities = ArrayList()..