본문 바로가기

스프링

094.WEB_Formatter_바인딩기술의우선순위와전략이론

1.     Com.springsource.javax.activation : Spring java-mail

2.     Com.springsource.javax.inject-1.0.0 : 프로토타입 프로퍼티 에디터를 위한 jar. @Inject, Provider인터페이스<PropertyEditorSupport> 지원

3.     Com.springsource.javax.mail : Spring java-mail

4.     Com.springsource.javax.servlet.jsp.jstl : JstlView

5.     Com.springsource.org.aopalliance : Spring ProxyFactoryBean

6.     Com.springsource.org.aspectj.tools : AspectJExpressionPointcut 포인트컷 표현식 지원

7.     Com.springsource.org.cator.core : 자동으로 자바 오브젝트를 XML로 변환 지원.

8.     Com.springsource.org.cator.xml : 자동으로 자바 오브젝트를 XML로 변환 지원

9.     Com.springsource.org.joda.time : Date포맷 로케일 지원.

10.   Com.springsource.junit : junit

11.   Commons-logging : Spring-context가 사용

12.   Jackson-annotation : MappingJackson2JsonView

13.   Jackson-core : MappingJackson2JsonView

14.   Jackson-databind : MappingJackson2JsonView

15.   Mail : java-mail

16.   Mockito : 목 프레임워크 중 Mockito

17.   Mysql-connector : Mysql JDBC

18.   Org.springframework.context.support : Spring java-mail

19.   Org.springframework.oxm : Object-XML Mapping. 마샬러 빈을 지정해 모델에서 변환에 사용할 오브젝트를 지정해주면, OXM마샬러를 통해 모델 오브젝트를 XML로 변환해서 뷰의 결과로 사용할 수 있음.

20.   Spring-aop : 스프링 기능 자체의 aop, Spring ProxyFactoryBean

21.   Spring-bean : 스프링 코어와 함께 의존성 주입 제공 (Core Container)

22.   Spring-context : 스프링 코어, BeanFactory를 확장한 어플리케이션 컨텍스트 구현, 리소스 로드 및 국제화 지원(Core Container)

23.   Spring-core : 다른 스프링 모듈이 사용하는 유틸리티(Core Container)

24.   Spring-expression : EL 확장 Bean속성(배열, 컬렉션 포함).(Core Container)

25.   Spring-jdbc : 스프링이 지원하는 jdbc.

26.   Spring-test.jar

-       @RunWith : Junit 프레임워크의 테스트 실행방법을 확장시 사용.

-       SpringJUnit4ClassRunner : 어플리케이션컨텍스트를 만들고 관리하는 확장 클래스

-       @ContextConfiguration(경로) : 자동으로 만들어줄 어플리케이션 컨텍스트 설정파일

27.   Spring-tx : DuplicateKeyException.class 파일 존재 및 스프링 트랜잭션

28.   Spring-web : ContextLoaderListener 내장 루트 컨텍스트(서비스,DAO)

29.   Spring-webmvc : SpringMVC를 위한 리졸버, 모델앤뷰 등 지원

 

모델의 오브젝트를 HTML로 만들어 줄때라던지, 다국어 서비스를 위해 지역화 메시지를 지원하는 웹 애플리케이션이라면, 같은 모델 프로퍼티 값이라도 지역설정에 따라 다른 내용으로 바꿔주는 기능. 리퀘스트 데이터 바인딩 뿐만 아닌 모델에서 뿌려주는 양방향으로 적용 가능.

 

 

Formatter의 경우에는 조금더 Web 프로그래밍에 최적화된 인터페이스라고 할 수 있다. Web의 경우 사용자의 요청값은 보통 String이며 응답 값도 String으로 해주게 된다. 그 때문에 Formatter Object , String간의 변경을 수월하게 할 수 있도록 , ThreadSafe 하고, 입력 받은 문자열에 따른 Message를 반환해주는 MessageSource를 사용할 수도 있다.

 

테스트 디스패처 서블릿을 위한 인터페이스

 

* 번거로운 XML 설정 대신 AbstractDispatcherServletTest를 사용

25. DispatcherServlet 초기화시 ServletConfig 오브젝트를 만들어 초기화해야함.

50. ContextRoot 값이 있을 때 추가해줌

54. setServletPath : 컨텍스트 root를 넣을 수 있도록 셋팅

58. requesturi 정보와 get,post mothod 셋팅 및 리스판스 객체 생성

 

81. 테스트 DispatcherServlet Init

 

 

 

@NumberFormat 애노테이션 바인딩 기능을 사용하려면 FormattingConversionServiceFormattingConversionServiceFactoryBean를 작성해야한다. 위 빈에 커스텀 포맷터를 추가해줘도 되고, 커스텀 Formatter를 추가할 필요가 없다면 다음과 같이 직접 빈으로 등록해주면 된다.

 

 

 

 

 

34. @NumberFormat : 다양한 숫자 변환을 지원하는 포맷터. 문자열로 표현된 숫자를 java.lang.Number 타입의 오브젝트로 상호 변환해준다. Number의 서브클래스는 Byte, Double, Float, Integer, Long, Short, BigInteger, BigDecimal 이 있다. 폼정보에서 1,234.56 이라는 값이 들어오면 BigDecimal 타입으로 변경하여 1234.56 이라는 값으로 변경이 가능하다.

48. 자바 언어의 취약점으로 자주 꼽히는 것 중 하나가 바로 날짜와 시간 정보에 대한 지원 기능이 빈약하다는 점이다. Joda의 대한 설명은 아래 스샷 참조