0. Bean 등록 메타정보 구성
1) XML 단독 사용
- 모든 Bean을 명시적으로 XML에 등록하는 방법.
- Bean 개수가 많아지면 XML 파일을 관리하기 번거로움
- 설정파일을 공유해서 개발 => 동시 수정, 충돌..
- DI에 필요한 적절한 setter 메서드 반드시 존재해야함.
2) XML과 빈 스캐닝(Bean Scanning) 혼용
- Bean 으로 사용될 클래스에 특별한 어노테이션을 부여해주면
이런 클래스를 자동으로 찾아서 Bean으로 등록함.
1. 스프링 애너테이션 (Annotation)
1) 기존에 XML에서 빈 설정을 애너테이션을 이용해서 자바 코드에서 설정하는 방법
2) 기능이 복잡해짐에 따라 XML에서 설정하는 것보다 유지 보수에 유리함
3) 현재 애플리케이션 개발 시 XML 설정 방법과 애너테이션 방법을 혼합해서 사용함
2. 스프링 애너테이션 제공 클래스
1) 브라우저 URL 요청 처리 애너테이션 클래스
- DefaultAnnotationHandlerMapping
: 클래스 레벨에서 @RequestMapping을 처리함
- AnnotationMethodHandlerAdapter
: 메서드 레벨에서 @RequestMapping을 처리함
2) <context:component-scan>
- 패키지 이름을 지정하면
애플리케이션 실행 시 해당 패키지에서 애너테이션으로 지정된 클래스를 빈으로 만들어줌.
- ex) <context:component-scan base-package="kr.co.ezenac">
3) 여러 가지 스테레오 타입 애너테이션 (Bean 등록 Annotation)
- @Controller : 스프링 컨테이너가 component-scan에 의해 지정한 클래스를 컨트롤러 빈으로 자동 변환함.
<bean> 태그와 동일한 역할을 함.
프리젠테이션 레이어,
웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스
- @Service : 지정한 클래스를 서비스 빈으로 자동 변환함.
서비스 레이어, 비즈니스 로직을 가진 클래스
- @Repository : 지정한 클래스를 DAO 빈으로 자동 변환함.
퍼시스턴스(persistence) 레이어,
영속성을 가지는 속성(파일,DB)을 가진 클래스
- @Component : 지정한 클래스를 빈으로 자동 변환함.
3. 스프링 애너테이션 이용한 로그인 기능
1) 메서드에 @RequestParam 적용
- 매개변수의 수가 많아지면 일일이 getParameter() 메서드를 이용하는 방법은 불편함
- @RequestParam을 메서드에 적용하면 쉽게 값을 얻을수 있음
2) @RequestParam의 required 속성
- @RequestParam적용시 required 속성을 생략하면 기본값은 true임.
=> 메서드 호출시 반드시 지정한 이름의 매개변수를 전달해야 함
- @RequestParam적용시 required 속성을 false로 설정하면
=> 메서드 호출시 지정한 이름의 매개변수가 전달되면 값을 저장하고
없으면 null을 할당함
3) @RequestParam 이용해 Map에 매개변수 값 설정
- 전송되는 매개변수의 수가 많을 경우 Map에 바로 저장해서 사용하면 편리함
4) @ModelAttribute 이용해 VO에 매개변수 값 설정
5) Model 클래스 이용해 값 전달
- 메소드 호출시 jsp로 값을 바로 바인딩하여 전달 가능함
- addAttribute() 로 데이터 바인딩함
- Model 클래스는 따로 뷰 정보를 전달할 필요가 없을 때 사용.
4. @Autowired 이용해 빈 주입
1) XML에서 빈을 설정 한 후
애플리케이션이 실행될때 빈을 주입해서 사용하면 XML파일이 복잡해짐(관리불편)
2) @Autowired 특징
- 코드에서 애너테이션으로 DI를 자동으로 수행함.
- 별도의 setter나 생성자 없이 속성에 빈 주입 가능함.
- 의존하는 객체를 자동으로 주입해 주는 어노테이션 임.
- 의존관계 주입(Dependency Injection)
'Web > Spring' 카테고리의 다른 글
Spring(11) - 타일즈 & Spring 지원 기능들 (0) | 2022.01.29 |
---|---|
Spring(10) - Maven & Spring (0) | 2022.01.29 |
Spring(8) - Spring Transaction (0) | 2022.01.29 |
Spring(7) - MyBatis Framework (0) | 2022.01.29 |
Spring(6) - Spring MVC (0) | 2022.01.29 |
댓글