@SessionAttributes와 SessionStatus 서블릿은 기본적으로 상태를 유지하지 않는다. 도메인 오브젝트로 사용자 정보를 수정하기 사용자 정보는 사용자가 수정할 수 없는 데이터와 수정할 수 있는 데이터가 있다. 수정하면 안되는 정보는 form에 보여주지 않는 것이 좋다. form submit으로 수정할 때 고객이 수정하지 못하는 데이터는 null, 0으로 전달될 가능성이 있다. 히든 필드 사용해서 해결 사용자가 수정하면 안되는 정보는 hidden 필드에 넣는다. 데이터 보안에 문제를 일으킨다. (html에서 조작할 수 있다.) 새로운 필드가 추가될 때 히든 필드도 추가해야한다. 실수할 가능성이 높아진다. DB 재조회하기 수정된 정보를 받아 도메인 객체에 넣어줄 때 DB에서 데이터를 다시 ..
@MVC 애노테이션을 중심으로 한 새로운 MVC의 확장 기능 @RequestMapping 핸들러 매핑 DefaultAnnotationHandlerMapping 빈을 등록해야한다. 매핑정보로 @RequestMapping 애노테이션을 활용한다. 타입 레벨에 @RequestMapping을 이용해서 타입 내의 매핑 메소드의 공통 조건(url)을 지정할 수 있다. @Controller를 사용하면 클래스 레벨에서는 @RequestMapping을 생략할 수 있다. @RequestMapping 정보는 상속되지만 서브 클래스에서 재정의 하면 슈퍼 클래스의 정보는 무시된다. 속성 value() URL 패턴 지정, 와일드 카드를 사용할 수 있다. {}로 PATH VARIABLE 지정할 수 있다. method() 요청 메소드..
기타 리졸버 핸들러 예외 리졸버 HandlerExceptionResolver : 컨트롤러 작업 중 발생한 예외를 어떻게 처리할지를 결정하는 전략. 예외 발생 > 핸들러 예외 리졸버 확인 > 있으면 핸들러 예외 리졸버가 처리, 아니면 서블릿 컨테이너가 처리 AnnotationMethodHandlerExcpetionResolver : @ExceptionHandler 애노테이션이 붙은 메소드가 예외처리한다. 특정 컨트롤러 작업 중 발생하는 예외를 처리하는 핸들러를 만들 때 유용하다. ResponseStatusExceptionResolver : 예외를 특정 HTTP 응답 상태로 전환해준다. DefaultHandlerExceptionResolver : 스프링에서 내부적으로 발생하는 주요 예외를 처리. Simple..
컨트롤러 역할 서비스 계층의 메소드 선정, 메소드 파라미터 타입에 맞게 요청 정보 변환 뷰에 출력할 내용을 모델에 넣어준다. 세션을 관리한다. 컨트롤러 종류 Servlet과 SimpleServletHandlerAdapter 표준 서블릿 서블릿 클래스 코드를 유지하면서 스프링 빈으로 등록할 수 있다. 서블릿이 컨트롤러 빈으로 등록된 경우 생명주기 메소드는 자동으로 호출되지 않는다. HttpRequestHandler와 HttpRequestHandlerAdapter HttpRequestHandler 인터페이스를 구현해서 컨트롤러를 만든다. 로우레벨 서비스를 개발할 때 이용할 수 있다. Controller와 SimpleControllerHandlerAdapter Controller 인터페이스를 구현해서 만든다...
스프링 웹 프레임워크 스프링은 유연성과 확장성, 다양성에 무게를 두고있는 프레임워크다 스프링의 웹 기술은 MVC 아키텍처를 근간으로 하고있다. 프레젠테이션 계층의 정보를 담은 모델 + 화면 출력 로직을 담은 뷰 + 제어로직을 담은 컨트롤러 프론트 컨트롤러 패턴 : 중앙집중형 컨트롤러가(DispatcherServlet) 서버로 들어오는 모든 요청을 먼저 받아서 처리한다. HTTP 요청에서 HTTP 응답까지 HTTP 요청 DispatcherServlet의 HTTP 요청 접수 (url-pattern 체크) 서블릿 컨테이너는 HTTP 요청이 DispatcherServlet에 할당된 것이면 요청 정보를 DispatcherServlet에 전달해준다. 모든 요청에 공통적으로 진행하는 전처리 작업을 수행 (보안, 한글..
스프링 트랜잭션 서비스 트랜잭션 추상화 : 트랜잭션 서비스의 종류나 환경이 바뀌더라도 트랜잭션 코드는 그대로 유지할 수 있다. 트랜잭션 동기화 : 트랜잭션을 일정 범위 안에서 유지해주고, 어디서든 자유롭게 접근할 수 있게 해준다. PlatformTransactionManager 트랜잭션 추상화 핵심 인터페이스 트랜잭션 경계를 지정하는데 사용한다. (getTransaction()) 시작과 종료를 트랜잭션 전파 기법을 이용해 조합하고 확장할 수 있다. TransactionStatus : 참여하고 있는 트랜잭션의 ID와 구분정보를 담고 있다. 구현 클래스 DataSourceTransactionManager 위의 트랜잭션 매니저를 사용하려면 트랜잭션을 적용할 DataSource를 스프링의 빈으로 등록해야한다. ..
JPA 영속성 관리와 ORM을 위한 표준 기술 ORM : 오브젝트를 가지고 정보를 다루면 RDB에 적절한 형태로 변환, RDB에 저장된 정보를 자바 오브젝트가 다루기 쉬운 형태로 변환. JPA 퍼시스턴트 컨텍스에 접근하고 엔티티 인스턴스를 관리하려면 EntityManager를 구현한 오브젝트가 필요하다. EntityManager는 애플리케이션 또는 컨테이너가 관리한다. EntityManagerFactory 빈 등록하기 LocalEntityManagerFactoryBean을 사용해서 EntityManagerFactory를 빈으로 등록한다. PersistentProvider 자동 감지 기능을 이용해 프로바이더를 찾는다. persistence.xml에 담긴 퍼시스턴스 유닛의 정보를 활용해 EntityManag..
빈의 종류 애플리케이션 로직 빈 : 애플리케이션 로직을 담고 있는 주요 클래스의 오브젝트 빈 애플리케이션 인프라 빈 : 애플리케이션의 로직을 담당하지는 않지만 애플리케이션의 로직 빈을 지원한다. (ex.DataSource) 컨테이너 인프라 빈 : 스프링 컨테이너의 기능을 확장해서 빈의 등록과 생성 등의 작업에 참여하는 빈. 주로 전용 태그를 통해 등록. (ex.DefaultAdvisorAutoProxyCreator, annotation-config 태그) 참고 : 태그는 빈 스캐너 기능을 제공하고 에 의해 등록되는 빈들도 등록한다. IoC/DI 설정 방법의 발전 스프링 1.x : XML을 이용한 빈 등록방법 사용 스프링 2.0 : 스키마와 네임스페이스를 가진 전용 태그 제공 스프링 2.5 : 빈 자동등록..
- Total
- Today
- Yesterday
- spring boot
- 토비의 스프링
- 스프링 부트 테스트
- DataAnnotation
- 자바의 정석
- Spring
- MSSQL
- 영속성
- Nullable
- OWIN
- SpringBoot
- 고아 객체
- 다이내믹 프록시
- JpaRepository
- JavaScript
- 준영속
- orphanRemoval
- @Modifying
- 빌더 패턴
- uploadfive
- c#
- default interface
- 스프링
- ASP.NET
- 스프링MVC
- Java
- JPA
- jQuery
- Effective Java
- C# 문법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |