주요 개념 복습 및 Spring Annotation 정리
💥 이전 개념 복습 + 새로운 개념
Controller | - 요청에 따라 알맞은 서비스를 호출하고 결과에 따라 응답을 제어하는 역할을 한다. |
Interface | - 모든 메서드가 추상인 클래스 - 필드는 묵시적으로 public static final - 메서드는 묵시적으로 public abstract ( + default 메서드도 가능함 ) * Service에서 인터페이스를 사용하는 이유 1. 프로젝트에 규칙성을 부여하기 위해 ( 인터페이스 상속 → 오버라이딩 강제 → 상속 받은 모든 클래스가 동일한 형태 ) 2. 유지보수를 쉽게 하기 위해 ( Service는 비즈니스 로직을 처리하므로 수정이 잦음. 인터페이스를 상속 받은 다른 클래스에 수정 코드를 작성한 후, 부모 인터페이스 = 자식 객체; (업캐스팅) 상태에서 대입되는 객체만 교체 ) 3. 클래스 사이의 결합도를 낮추기 위해 4. Spring AOP → AOP는 spring-proxy를 이용해 동작하고, spring-proxy 객체는 Service 인터페이스를 상속받아 동작한다. |
Model 객체 | 데이터를 K:V 형태로 담아서 전달하는 용도의 객체 → page, request, session, application scope와 사용 방법이 유사함. |
💥 Annotation 정리
@Controller | - presentation layer , 웹앱에 전달되는 모든 요청과 응답을 처리하는 역할임을 명시 + Bean에 등록함. |
@Service | - Service layer , 비즈니스 로직을 가진 클래스임을 명시 + Bean에 등록함. |
@Repository | - Persistance layer , 영속성을 가지는 속성(파일,DB)을 제어하는 클래스임을 명시 + Bean 등록 |
@RequestMapping | - 요청 주소, 전달 방식에따라 연결되는 클래스 또는 메서드를 지정한다. → 클래스 + 메서드에 동시 작성하여 하나의 주소로 해석할 수 있다. * @RequestMapping 규칙 1. ( ) 안에 작성되는 매개변수가 1개인 경우 → 매핑할 요청 주소로 해석한다. ( == value ) 2. ( ) 안에 작성되는 매개변수가 2개 이상인 경우 → 각 값을 해석하기 위해 value= , method= 과 같은 key 값을 작성한다. 3. method 키 미작성 시 GET/POST 관계없이 모두 처리한다. ex) @RequestMapping("/member/*") @RequestMapping(value="login", method=RequestMethod.GET) |
@Autowired | - Servlet-context.xml 파일의 Component-scan을 통해 Bean으로 등록된 객체 중 타입이 같거나 상속관계인 객체를 찾아서 자동으로 의존성 주입(DI)를 하는 Annotation |
@RequestParam | - 메서드 매개변수 앞에 작성하는 Annotation - @RequestParam( ) 뒤쪽에 작성된 매개변수에 Parameter가 저장된다. ex) @RequestParam("memberId") String id → name 속성이 memberId인 파라미터를 얻어와 id 변수에 저장한다. * @RequestParam 속성 - value : 전달 받을 input 태그의 name 속성 값 (매개변수 1개일 때 기본 값) - required : 파라미터 필수 여부(기본값 : true == 필수) → required=true 일 때 파라미터가 없으면 : 400 Bad Request(잘못된 요청) - defaultValue : 전달 받은 파라미터 값이 없을 때 지정할 기본 값 * input 태그의 name 속성 값과, 파라미터를 저장할 매개 변수명이 같으면 생략 가능하다. |
@ModelAttribute | - 요청 시 전달 받은 파라미터를 객체 형태로 매핑하는 역할을 하는 Annotation * 객체로 매핑하기 위한 조건 1) input 태그 name 속성 값과 객체의 멤버 변수(필드)명이 같아야한다. 2) 객체로 만들어진 클래스에 기본 생성자가 있어야한다. → 스프링이 객체를 자동 생성할 때 사용하기 때문! 3) setter가 작성되어 있어야 한다. * 메서드 / 매개변수 레벨로 사용이 가능하다. - @ModelAttribute를 이용해 파라미터가 세팅된 객체를 커맨드 객체라고 한다. |
@SessionAttributes | - Model 속성 중 { } 안에 작성한 것을 request → session 범위로 변경 |
'Study > 수업 내용 정리' 카테고리의 다른 글
Spring 기초1 (0) | 2022.01.04 |
---|---|
Servlet / JSP [ 1 / ? ] 211208 (0) | 2021.12.08 |
JavaScript - 정규 표현식 기초 (0) | 2021.11.09 |
JavaScript - 함수 (0) | 2021.11.09 |
이사 (0) | 2021.11.04 |