Spring/SPRING 개념

스프링 어노테이션

15881588개발개발 2019. 10. 13. 18:31

dispatcherServlet에 <annotaion-drive>을 추가하면 컨트롤러를 작성가능하게 한다.

 

@어노테이션명- 사용할 수 있는곳


@Component -클래스

 컨트롤러 객체임을 명시, 개발자가 직접 생성한 class . 클래스를 스프링에게 알아서 인스턴스 생성 후 등록

 Spring ioc container에 bean을 등록하는 어노테이션.

 

component를 사용한 bean의 의존성주입은 @Autowired어노테이션을 이용하여 할 수 있다.

 

@Component
@Transactional
public class PermissionProvider extends BasePermissionProvider<Member, UserAccess, Permission> {

 

@Controller
public class HomeController {

	@Autowired
	private PermissionProvider permissionProvider;

 


 

@RequestMapping-클래스,매소드

-특정 URL에 매칭되는 클래스나 메소드임을 명시

 


@RequestParam-파라미터

-요청에서 특정한 파라미터값을 찾아낼 떄 사용

요청 파라미터를 메소드에서 1:1로 받기위해서 사용한다. 

@RequestParam은 필수여부가 ture이기 때문에 기본적으로 반드시 해당파라미터가 전송되어야 한다. 

    @RequestMapping(value="/programRead", method = RequestMethod.GET)
    public ModelAndView read(@RequestParam("prog_id") int prog_id) throws Exception {

        ModelAndView view = new ModelAndView();
        ProgramVO list =  programService.getBoardSelect(prog_id);
        view.addObject("program",list);
        view.setViewName("/program/programRead");

        return view;
    }

반드시 필요한 변수가 아니라면 required값을 false로 설정해두면된다 .

 


@ModelAttribute -메소드 파라미터

-자동으로 해당 객체를 뷰까지 전달

클라이언트가 전송하는 여러파라미터들을 1:1로 객체에 바인딩 하여 다시 view로 넘겨서 출력하기 위해 사용되는 오브젝트이다 . 

@ModelAttribute에는 매핑시키는 파라미터의 타입이 객체의 타입과 일치하는지를 포함한 다양한 검증(Validiation) 작업이 추가적으로 진행된다. 예를 들어 게시물의 번호를 저장하는 int형 index 변수에 "1번" 이라는 String형을 넣으려고 한다면, BindException이 발생하게 된다. @RequestBody의 경우에는 Json이나 XML을 Jackson과 같은 MessageConverter를 사용하여 변환시키는 반면에, @ModelAttribute는 여러 개의 파라미터를 바로 자바빈 객체로 매핑시킨다는 차이가 있다. 그렇기 때문에 @ModelAttribute는 JSP에서 Form 태그를 통해 전달받은 파라미터들을 객체로 바인딩 시키는 경우에 사용할 수 있다.

 

@ModelAttribute와 @RequestBody를 보다 극단적으로 설명하자면, @ModelAttribute는 바인딩시키는 어떤 데이터를 set해주는 Setter함수가 없다면 매핑이 되지 않는다. 하지만 @RequestBody는 요청받은 데이터를 변환시키는 것이기 때문에, Setter함수가 없어도 값이 매핑이 된다.

 

 


@RequestBody-메소드 파라미터

 

 

Http요청의 Body내용을 JavaObject로 변환시켜주는 역할을 한다. get 방식은 http패킷의 헤더에 데이터가 들어온다. 

 


@ModelAttribute -메소드 파라미터

-자동으로 해당 객체를 뷰까지 전달

 

 

 


 

https://m.blog.naver.com/scw0531/220988401816 참조 

mangkyu.tistory.com/72