애너테이션은 정말 신박하다.. 아주 편리하다. 지금까지 복잡하게 생으로 외우고 이해했던게 조금 억울해질 정도
스스로도 그렇지만 개발자들은 귀찮은 일을 최대한 줄이려고 노력하는 사람들인 것 같다..
하지만 이제 따로 외울것을 곁들인,.
1. 스프링- 마이바티스 연동 관련 XML 파일 설정하기.
라이브러리를 lib에 붙여넣는다.

마이바티스 설정 파일을 action-mybatis.xml에 작성할 것이다. web.xml을 작성해 마이파티스 설정 파일을 읽어들이도록 했다.

action-servlet.xml은 뷰 관련 빈과 각 URL 요청명에 대해, 호출할 메서드들을 설정한다.

action-mybatsi.xml을 작성한다. sqlMapConfig.xml을 대체하는 파일이다.
스프링은 마이바티스 관련 클래스들을 설정 파일에서 설정해 빈들을 자동으로 생성한다. 그러므로 SqlSessionoFactoryBean클래스 빈을 생성하면서 member.xml과 빈 생성 설정인 modelConfig.xml을 읽어들인다.
마이바티스에서 제공하는 PooledDataSource클래스를 이용해 dataSource빈을 생성하고, SqlSessionFactorybean클래스로 dataSource속성에 빈을 설정한다. DAO로도 마찬가지로 설정한다.

DAO 빈을 사용할 memberService 빈을 ref(참조)로 설정한다.

<typeAlias>태그로 매퍼 파일에서 긴 이름의 클래스를 별칭으로 사용할 수 있게 설정하였다.

컨트롤러를 구현한다. setter로 memberService 빈을 주입한다. 그리고 조회한 정보를 ModerlAndView의 addObject()메서드를 이용하여 바인딩한다. 회원가입창에서 전송된 회원 정보는 bind()메서드를 이용하여 VO해당 속성에 자동으로 설정해준다.

DAO르 ㄹ주입하는 setter을 MemberServiceImpl에 작성한다.

sqlSession빈을 속성에 주입하기 위해 setter을 구현한다.

회원가입 결과




2. 애너테이션
DI같은 자바 코드와 관련된 설정은 직접 코드에서 할 수 있게 애너테이션이라는 기능을 스프링 3.0 이상에서 제공한다.
스프링에서 애너테이션을 사용하려면, 관련 클래스를 xml 설정 파일에서 빈으로 설정해야 한다.
-DefaultAnnotationHandlerMapping : 클래스 레벨에서의 @RequestMapping 처리
-AnnotationMethodHandlerAdapter : 메서드 레벨에서의 @RequestMapping 처리
<context:component-scan base-package="패키지 이름" /> 을 지정하면, 해당 패키지에서 애너테이션으로 지정된 클래스를 빈으로 만들어존다.
로그인 기능 구현하기
위에서 말한 빈을 설정하고, 적용시킬 패키지 경로를 설정한다.

com.spring 하위 패키지에 클래스가 위치해야 에너테이션이 적용된다.
@Controller 애너테이션은 컨트롤러 빈을 자동으로 생성한다. @RequestMapping 을 통해 /loginForm.do, loginform2.do로 요청할 시 loginForm()을 호출하도록 만든다.

ID와 이름을 전송하도록 로그인 창을 만든다.

결과창에서 입력한 아이디와 이름을 받아와 표시한다.

결과


@RequestParam 적용하기
지금까지는 getParameter()를 이용해 값을 얻었지만, 이 애너테이션을 사용하면 일일이 get을 이용하지 않아도 전송받은 매개변수에 자동으로 값을 설정할 수 있다.
@RequestParam을 이용해 매개변수가 userID 이거나 userName 이면, 그 값을 userID 또는 userName에 자동으로 설정한다. 굳이 get을 사용하지 않아도 되므로 주석처리한다.

같은 결과를 볼 수 있다.

@ReuqestParam의 required 속성을 사용해본다. 이 속성을 사용하면 '반드시 전달해야 하는 필수 매개변수인 경우' 와 그렇지 않은 경우를 설정할 수 있으며, 생략하면 기본값은 true로 설정된다.


@RqeustParam을 이용하여 Map에 키, 값 쌍으로 매개변수의 값을 설정한다. 이름이 info인 Map에 매개변수 이름을 key, 값을 value로 저장할 것이다.
@Request Map<String, String> 을 이용해 저장한다.


@ModelAttribute를 이용해 VO에 매개변수 값을 설정할 수도 있다.
@Autowired 애너테이션을 이용해 빈 주입하기
- 현재 스프링에서는 이 애너테이션을 이용하여 개발자가 만든 클래스들의 빈을 직접 자바 코드에서 생성해 사용한다. 별도의 setter, 또는 생성자가 없어도 속성에 빈을 주입할 수 있는 것이다.
@Autowired를 이용해 id가 memberService, VO인 빈을 자동 주입한다.

@Service를 이용해 memberService인 빈을 자동 생성하고,
memberDAO인 빈을 자동 주입한다.

Impl클래스를 작성한다. DAO인 빈을 주입하면서 sqlSeesion인 빈 또한 자동 주입한다.

VO클래스는 @Component를 이용해 빈을 자동 생성한다.

이 과정을 통해 sqlSession의 빈이 memberDAO로, DAO의 빈이 Service로, Service의 빈이 Controller로 주입되게 된다.
결과



'JAVA SPRING' 카테고리의 다른 글
| 마이바티스 프레임워크 CRUD (0) | 2021.08.05 |
|---|---|
| MVC (0) | 2021.07.30 |
| HTML5 와 제이쿼리 (0) | 2021.07.28 |
| JSTL (0) | 2021.07.27 |
| JSP 스크립트, 액션 태그 (0) | 2021.07.27 |