-
9. 스프링 어노테이션개발자 수업/Spring 2022. 1. 4. 22:59
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>
- 패키지 이름을 지정하면 애플리케이션 실행 시 해당 패키지에서 어노테이션으로 지정된 클래스를 빈으로 만들어줌
- 예) <context:component-scan base-package="kr.co.ezenac">
3) 여러 가지 스테레오 타입 어노테이션
- @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)'개발자 수업 > Spring' 카테고리의 다른 글
11. 타일즈(tiles) (0) 2022.01.12 10. 메이븐과 스프링 (0) 2022.01.07 8. 스프링 트랜잭션 (0) 2022.01.04 7. MyBatis Framework 사용 (수정중) (0) 2021.12.31 6. Spring MVC (0) 2021.12.30