@Bean의 경우 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 등록하고 싶은 경우에 사용된다. @Bean은 @Configuration으로 선언된 클래스 내에 있는 메소드를 정의할 때 사용한다. 이 메소드가 반환하는 객체가 bean이 되며 default로 메소드 이름이 bean의 이름이 된다.
@Bean
setter나 builder 등을 통해서
사용자가 프로퍼티를 변경해서 생성한 인스턴스를
Spring에게 관리하라고 맡기는 것이다.
개발자가 직접 컨트롤이 가능한 Class들의 경우엔 @Component @Component 의 종류에는 @Repository @Service @Controller 로 나뉜다.
@Component는
클래스를 Spring에게 알아서
**인스턴스 생성**및**Bean 등록**하는 과정을 맡기는 것이다.
스프링에서 제공하는 FrontController인 DispatcherServlet의 역할은??
DispatcherServlet의 등장으로 엄청나게 web.xml의 역할이 축소 되었다.
DispatcherServlet가 있기전에는 사용자의 URL을 일일이 요청을 처리하기 위해 web.xml에 등록(서블릿과 매핑시켜주는 작업)을 반드시 해야했다. 그렇다고 web.xml이 안쓰이는 것은 아니다.
web.xml에서 자주 쓰이는 서블릿 매핑을 DispatcherServlet이 한다고 생각하시면 되고 나머지 web.xml의 기능들은 그대로 web.xml을 이용하신다고 생각하시면됩니다. (web.xml의 기능은 DispatcherServlet등록, 객체의 URL범위 , 필터 등이 있습니다.)
스프링 MVC Controller의 특징
파라미터 수집
사용자의 요청에 필요한 데이터를 추출하고 VO(DB의 레코드와 상응되는 클래스) 나 DTO(컨트롤러,뷰,비즈니스등의 계층간 데이터 교환을 위한 자바빈즈)로 변환하는 파라미터의 수집 작업을 한다.
애노테이션을 통한 간편 설정
스프링 MVC 설정은 MVC나 애노테이션을 사용가능하고, 주로 애노테이션을 이용하여 클래스나 메소드의 선언에 필요한 애노테이션을 추가하는 작업을 통해 요청이나 응답에 필요한 모든 처리를 완료할 수 있다.
3.테스트의 편리
WAS의 실행없이도 테스트할 수 있는 편리한 방법을 제공
servlet-context.xml 사용
프로젝트 생성시 DispatcherServlet인
spring-servlet-context-xml
클래스 선언에 애노테이션을 이용해서 컨트롤러를 작성 가능하게 한다.
웹 이미지/CSS/javaScript 파일과 같이 고정된 자원들의 위치
(스프링 MVC패턴 자체가 디스패처 서블릿이 모든 요청을 컨트롤러에게 넘겨주는 방식인데 css등의 요청들도 컨트롤러에게 넘겨주면 컨트롤러가 해야할 일도 아니지만 컨트롤러는 해당하는 요청이 없기 때문에 에러가 날 것이다. 만약 정상작동 하더라도 JSP안의 CSS나 자바스크립트등을 디스패처 서블릿이 가로채가서 원하는 화면이 안나올 것이다. 이를 해결하기위해 resources가 있는것)
-패키지 내부의 클래스(클래스 패스에 위치해있는 클래스)들을 조사하는 것으로 만약 과 같이 사용하게 된다면 특정한 애노테이션이 붙은 클래스를 자동으로 빈으로 등록하는 기능을 제공한다.