상세 컨텐츠

본문 제목

[추가중] @Annotation 정리

Developer/spring framework

by gabriel.LIM 2014. 3. 31. 16:51

본문

Spring Annotations: Contents:

Annotation Package Detail/Import statement
@Service import org.springframework.stereotype.Service;
@Repository import org.springframework.stereotype.Repository;
@Component import org.springframework.stereotype.Component;
@Autowired import org.springframework.beans.factory.annotation.Autowired;
@Transactional import org.springframework.transaction.annotation.Transactional;
@Scope import org.springframework.context.annotation.Scope;
Spring MVC Annotations
@Controller import org.springframework.stereotype.Controller;
@RequestMapping import org.springframework.web.bind.annotation.RequestMapping;
@PathVariable import org.springframework.web.bind.annotation.PathVariable;
@RequestParam import org.springframework.web.bind.annotation.RequestParam;
@ModelAttribute import org.springframework.web.bind.annotation.ModelAttribute;
@SessionAttributes import org.springframework.web.bind.annotation.SessionAttributes;
Spring Security Annotations
@PreAuthorize import org.springframework.security.access.prepost.PreAuthorize;

 

@Controller

: 클래스 타입에 적용되며, @Controller 를 붙이면 해당 클래스를 웹 요청을 처리하는 컨트롤러로 사용할 수 있다.

컨트롤러로 사용하기 위해 @Controller 가 적용된 클래스는 <bean> 태그에서 스프링 빈으로 등록해주면 된다.

@RequestMapping

: 컨트롤러가 처리할 요청 URL 을 명시하는데 사용되며, 클래스나 메서드에 적용된다.

클래스에 적용하지 않고 메서드에만 적용할 경우 각각의 메서드가 처리할 요청 URL 을 명시하게 된다.

@PathVariable


@RequestParam
: 표시된 요청 파라미터값에 대해서 값을 채우는 역할..

 

@ModelAttribute
: 웹단에서 넘어오는 model에 대해서 데이터를 채워주는 역할을 한다..

 

@SessionAttributes
:웹단에서 사용되는 ModelAttributes에 대해서 자동 설정을 해준다.
위에 있는 @ModelAttributes 와는 달리 session에 저장된 model값에 대해서만
설정을 해주는 것 같다.

 

@Controller
@RequestMapping("/owners/{ownerId}/pets/{petId}/edit")
@SessionAttributes("pet")
public class EditPetForm {
     @ModelAttribute("types")
         public Collection<PetType> populatePetTypes() {
        return this.clinic.getPetTypes();   
}        

@RequestMapping(method = RequestMethod.POST)   
public String processSubmit(@ModelAttribute("pet") Pet pet, BindingResult result, SessionStatus status) {
        new PetValidator().validate(pet, result);
        if (result.hasErrors()) {
            return "petForm";
        }else {
            this.clinic.storePet(pet);
            status.setComplete();
            return "redirect:owner.do?ownerId=" + pet.getOwner().getId();
        }
    }
}

 

*Spring Security Annotations

 

@PreAuthorize
: 함수에 대한 접근 권한 설정할 수 있다. ( ex) Admin )

 

@Transactional
@PreAuthorize("hasRole('ROLE_ADMIN')")
public void removeContact(Integer id){
contactDAO.removeContact(id);
}

&pathVariable과 RequestParam의 차이점

@출처 : http://www.techferry.com/articles/spring-annotations.html

 

============================= 자바 annotation =================================

 

@Override

: 기반 클래스의 메소드를 오버라이드한 것을 표시한다.

메소드 이름을 잘못 표기하거나 시그니처를 잘못 지정할 경우 컴파일 에러 발생

@Deprecated

: 해당 요소가 사용될 경우 컴파일러가 경고를 발생 시킨다.

@SuppressWarning

: 부적절한 컴파일러의 경고를 제거하기 위해 사용된다.

 

관련글 더보기