본문 바로가기
Web/Spring

Spring(9) - Spring Annotation

by SeleniumBindingProtein 2022. 1. 29.
728x90
반응형

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)

728x90
반응형

'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

댓글