주로 Apache Common만 사용하다가 우연한 기회에 Google에서도 Common API를 제공하는걸 발견 했음
나중에 정리해야 할 내용들..
http://code.google.com/p/guava-libraries/
새로 추가된 기능은 아래와 같다.
- Code equivalents for Spring's XML namespaces
- Builder-style APIs for code-based Hibernate configuration
- TestContext framework support for @Configuration classes and bean definition profiles
- Support for injection against non-standard JavaBeans setters
- Support for Servlet 3 code-based configuration of Servlet container
- Support for Servlet 3 MultipartResolver
- JPA EntityManagerFactory bootstrapping without persistence.xml
- New HandlerMethod-based Support Classes For Annotated Controller Processing
- Consumes and Produces @RequestMapping Conditions
- Working With URI Template Variables In Controller Methods
- Validation For @RequestBody Method Arguments
이중 눈에 띄는 내용들은, 아래에 따로 정리를 해서 시간날때 살펴 보려고 한다.
● Spring XML Namespace 를 위한 Code 들 추가
- 예를 들면 아래와 같은 Custom NameSpace를 Java Code상에서 Annotation으로 설정하게 해 주는것을 의미한다.
- 이미 3.0 버전부터 @Configuration 이나 @Bean등의 Custon NameSpace 가 추가 된 전력이 있다.
● Code Based Hibernate Configuration을 위한 Builder Style API
-
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'someController': Autowiring of fields failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Could not autowire
field:some.package.name.CategoryService some.package.name.categoryService; nested exception
is org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'categoryServiceImpl': Autowiring of fields failed; nested exception is
org.springframework.beans.factory.BeanCreationException: Could not autowire field: private
nsome.package.name.CategoryDao some.package.name.categoryDao; nested exception is
java.lang.IllegalArgumentException: Can not set some.package.name.CategoryDao field
nsome.package.name.categoryDao to $Proxy15
<aop:config proxy-target-class="true">
<aop:aspect ref="selectCategoryModelAspect">
<aop:around pointcut-ref="categoryDao.selectModel" method="procedingEvent" />
</aop:aspect>
</aop:config>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.1_3</version>
<scope>runtime</scope>
</dependency>