목록Spring (17)
우당탕탕 개발자 되기
트랜잭션(Transaction) : 비즈니스에서 쪼개 질 수 없는 하나의 단위 작업 ACID 원칙 원자성(Atomicity) 하나의 트랜잭션은 모두 하나의 단위로 처리되어야 한다. 어떤 트랜잭션이 A와 B 로 구성된다면 항상 A,B 처리결과는 동일한 결과가 되어야 한다. 만약 A는 성공했지만 B 가 실패할 경우 A,B 모두 원상태로 돌아가야한다. 어떤 작업이 잘못되는 경우에는 모든 것이 원상태로 되돌아가야한다. 일관성(Consistency) 트랜잭션이 성공했다면 데이터베이스의 모든 데이터는 일관성을 유지해야만 한다. 트랜잭션으로 처리된 데이터와 일반 데이터 사이에는 전혀 차이가 없어야한다. 격리(Isolation) 트랜잭션으로 처리되는 중간에 외부에서의 간섭은 없어야한다. 영속성(Durability) 트..
AOP -기존의 코드를 수정하지 않고, 원하는 기능들만 결합할 수있는 패러다임 Target : 순수한 비즈니스 로직을 의미, Target을 전체적으로 감싸고 있는 존재를 Proxy 라고한다. Proxy : 내부적으로 Target을 호출하지만, 중간에 필요한 관심사들을 거쳐서 Target 을 호출하도록 자동 or 수동으로 작성된다. 대부분 Spring AOP 기능을 이용해서 자동으로 생성된다. JoinPoint : Target이 가진 여러 메서드, 어떤 메서드에 관심사를 결합할 지를 결정하는걸 PointCut 이라고 한다. PointCut : 관심사와 비즈니스 로직이 결합되는 지점을 결정하는 것. 메서드를 호출하게 되면 자동으로 관심사가 결합된 상태로 동작하게 된다 Aspect : 관심사 자체를 의미하는 ..
일반적으로 웹 프로젝트는 3-tier 방식으로 구성 PresentationBusinessPersistence tier Presentation tier(화면계층) : 화면에 보여주는 기술을 사용하는 영역, 프로젝트의 성격에 맞춰 앱으로 제작하거나 CS(client-Server)로 구성되는 경우도 있다. Business Tier(비즈니스 계층) : 순수한 비즈니스 로직을 담고 있는 영역, 고객이 원하는 요구 사항을 반영하는 계층으로 중요, 메서드의 이름은 고객들이 사용하는 용어를 그대로 사용하는 것이 좋다. Persistence Tier(영속 계층, 데이터 계층) : 데이터를 어떤 방식으로 보관하고, 사용하는가에 대한 설계가 들어가는 계층 일반적으로 데이터베이스를 이용 스프링 MVC 영역은 Presentat..
Controller의 Exception 처리 -@ExceptionHandler와 @ControllerAdvice를 이용한 처리 -@ResponseEntity를 이용하는 예외 메시지 구성 @ControllerAdvice -AOP(핵심적인 로직은 아니지만 프로그램에서 필요한 '공통적인 관심사는 분리'하자는 개념)를 이용하는 방식 -AOP 방식을 이용하면 공통적인 예외사항에 대해서는 별도로 @ControllerAdvice를 이용해서 분리하는 방식 package org.zerock.exception; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ControllerAdvice; import org.spring..
Controller 메서드는 작성 시 특별하게 Model이라는 타입을 파라미터로 지정할 수 있다. Model 객체는 JSP에 컨트롤러에서 생성된 데이터를 담아서 전달하는 역할을 하는 존재 Model은 '모델 2' 방식에서 사용하는 request.setAttribute()와 유사한 역할을 한다. 메서드의 파라미터를 Model 타입으로 선언하게 되면 자동으로 스프링 MVC에서 Model타입의 객체를 만들어 주기 때문에 개발자의 입장에서는 필요한 데이터를 담아 주는 작업만으로 작업이 완료된다, 사용해야 하는 경우는 주로 Controller에 전달된 데이터를 이용해서 추가적인 데이터를 가져와야하는 상황이다. ex) 리스트 페이지 번호를 파라미터로 전달받고, 실제 데이터를 View로 전달해야하는 경우, 파라미터들..
스프링 MVC를 이용하는 경우 작성되는 Controller의 특징( 스프링 MVC는 어노테이션을 중심으로 구성되기 때문에 각 어노테이션의 의미에 대해서 주의해가며 학습해야된다) HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용가능 Get 방식, Post 방식 등 전송방식에 대한 처리를 어노테이션으로 처리 가능 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능 @RequestMapping의 변화 -@Controller 어노테이션은 추가적인 속성을 지정할수 없지만, @RequestMapping의 경우 몇 가지의 속성을 추가 할수있다. 이 중에서도 가장 많이 사용하는 속성..
MVC 프로젝트를 구성해서 사용한다는 의미 - 내부적으로 root-context.xml 로 사용하는 일반 JAVA 영역과 servlet-context.xml로 설정하는 Web 관련 영역을 같이 연동해서 구동하게된다. 프로젝트 구동시 관여하는 XML -web.xml : Tomcat 구동과 관련된 설정 -root-context.xml : 스프링과 관련된 설정 -servelt-context.xml : 스프링과 관련된 설정 web.xml : 프로젝트 구동의 시작 -web.xml 의 상단에는 가장 먼저 구동되는 Context Listener 가 등록 에는 root-context.xml의 경로가 설정되어 있고, 에는 스프링 MVC의 ContextLoaderListener는 해당 웹 어플리케이션 구동시 같이 동작하므..
예제내용 레스토랑 객체를 만들고 레스토랑에서 일하는 셰프 객체를 주입하는 예제 -셰프 클래스 package org.zerock.sample; import org.springframework.stereotype.Component; import lombok.Data; @Component @Data public class Chef { } -레스토랑 클래스 : 셰프를 주입받도록 설계한다. package org.zerock.sample; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import lombok.Data; import lombok.Setter; @C..