请注意断句。
前阵子复习了一下Spring,小总结。
最初用Spring应该是1.2版本吧。xml配置麻烦得能恶心死人,主要是和struts配合用,居然忍过来了。2.0以后逐渐加入了比较好的annotation支持,简化了xml配置,可是最近却不怎么用它了,CT就没有用上,因为其实Spring的每个模块都有不错的替代品,比如依赖注入的话Guice就已经很够用了。
手头上的版本是2.5。 蓝色是Sample代码
1 注释驱动的依赖注入
1.1 Autowired (和Guice的@Inject差不多)
Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 @Autowired(required=false)
其实就是 AutowiredAnnotationBeanPostProcessor 配置的代替品
1.4 @Component
虽然我们可以通过 @Autowired在 Bean 类中使用自动注入功能,但是 Bean 还是在 XML 文件中通过 <bean> 进行定义,通过@Component从 XML 配置文件中完全移除 Bean 定义的配置是让人感觉很舒服的特性之一。
同时应该在配置文件里加入扫描设置:
<context:component-scan base-package="org.net9.web.dummy"/>
值得一提的是,和@Component具有一样功能的有@Repository,@Service,@Controller。有利于web应用的分层注释
1.5 @Scope
可定义scope,可选的有prototype,session, request,global和singleton,和Guice的@ApplicationScoped之类差不多了
2 基于注解驱动的MVC
2.1 @Controller和@RequestMapping
有这两个annotation很方便。@Controller定义MVC中的控制器,@RequestMapping控制URL转发请求。
@RequestMapping("/dummy/") //接受形如/dummy/的url
@RequestMapping(params="mothod=list") //通过参数method,只接受
该参数是list的url,和Struts的DispatchAction一个效果。
另外还可以通过@RequestMapping只接受某种方式的web请求
@RequestMapping(params = "mode=submit",
method = RequestMethod.POST) //只针对POST请求
2.2 @RequestParam
入参绑定的功能很贴心啊,就不用在处理方法里面再用request.getParameter了(当然,屏蔽了request并不一定是好处)。
public String hoge(@RequestParam("dummy")int dummy) {}
3 国际化支持
虽然不是什么让人欣喜的功能。配置xml里面加入配置,jsp页面就可以随意用,和Struts大同小异
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="basename" value="Messages" />
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
4 测试支持
本来测试要使用ClassPathXmlApplicationContext来先注入相关类的,有了AbstractDependencyInjectionSpringContextTests让人觉得很惊喜。只要继承一下然后重载getConfigLocations方法传入配置文件路径就会得到自动的注入
public class DummyDAOTest extends AbstractDependencyInjectionSpringContextTests{
protected String[] getConfigLocations(){
return CONTEXT_XML_LOCATIONS;
}
public static final String[] CONTEXT_XML_LOCATIONS = { "applicationContext.xml" };
@Autowired
DummyDAO dummyDAO;
}
发布时间:2009-03-22 03:18:31 | 阅读:353 | 评论:0
前阵子复习了一下Spring,小总结。

最初用Spring应该是1.2版本吧。xml配置麻烦得能恶心死人,主要是和struts配合用,居然忍过来了。2.0以后逐渐加入了比较好的annotation支持,简化了xml配置,可是最近却不怎么用它了,CT就没有用上,因为其实Spring的每个模块都有不错的替代品,比如依赖注入的话Guice就已经很够用了。

手头上的版本是2.5。 蓝色是Sample代码
1 注释驱动的依赖注入
1.1 Autowired (和Guice的@Inject差不多)
Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 @Autowired(required=false)
private SomeStrategy strategy = new DefaultStrategy();1.3 <context:annotation-config/>
此时配置文件可能需要加入
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
1.2 @Qualifier
Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,避免产生注入错误。
其实就是 AutowiredAnnotationBeanPostProcessor 配置的代替品
1.4 @Component
虽然我们可以通过 @Autowired在 Bean 类中使用自动注入功能,但是 Bean 还是在 XML 文件中通过 <bean> 进行定义,通过@Component从 XML 配置文件中完全移除 Bean 定义的配置是让人感觉很舒服的特性之一。
同时应该在配置文件里加入扫描设置:
<context:component-scan base-package="org.net9.web.dummy"/>
值得一提的是,和@Component具有一样功能的有@Repository,@Service,@Controller。有利于web应用的分层注释
1.5 @Scope
可定义scope,可选的有prototype,session, request,global和singleton,和Guice的@ApplicationScoped之类差不多了
2 基于注解驱动的MVC
2.1 @Controller和@RequestMapping
有这两个annotation很方便。@Controller定义MVC中的控制器,@RequestMapping控制URL转发请求。
@RequestMapping("/dummy/") //接受形如/dummy/的url
@RequestMapping(params="mothod=list") //通过参数method,只接受
该参数是list的url,和Struts的DispatchAction一个效果。
另外还可以通过@RequestMapping只接受某种方式的web请求
@RequestMapping(params = "mode=submit",
method = RequestMethod.POST) //只针对POST请求
2.2 @RequestParam
入参绑定的功能很贴心啊,就不用在处理方法里面再用request.getParameter了(当然,屏蔽了request并不一定是好处)。
public String hoge(@RequestParam("dummy")int dummy) {}
3 国际化支持
虽然不是什么让人欣喜的功能。配置xml里面加入配置,jsp页面就可以随意用,和Struts大同小异
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" abstract="false" lazy-init="default" autowire="default" dependency-check="default">
<property name="basename" value="Messages" />
<property name="useCodeAsDefaultMessage" value="true" />
</bean>
4 测试支持
本来测试要使用ClassPathXmlApplicationContext来先注入相关类的,有了AbstractDependencyInjectionSpringContextTests让人觉得很惊喜。只要继承一下然后重载getConfigLocations方法传入配置文件路径就会得到自动的注入
public class DummyDAOTest extends AbstractDependencyInjectionSpringContextTests{
protected String[] getConfigLocations(){
return CONTEXT_XML_LOCATIONS;
}
public static final String[] CONTEXT_XML_LOCATIONS = { "applicationContext.xml" };
@Autowired
DummyDAO dummyDAO;
}
发布时间:2009-03-22 03:18:31 | 阅读:353 | 评论:0