读书人

Spring 诠注学习手札(一) 构建简单W

发布时间: 2012-10-24 14:15:58 作者: rapoo

Spring 注解学习手札(一) 构建简单Web应用
近来工作发生了一些变化,有必要学习一下Spring注解了!
网上找了一些个例子,总的说来比较土,大多数是转载摘抄,按照提示弄下来根本都运行不了,索性自己趟一遍这浑水,在这里留下些个印记。
这次,先来构建一个极为简单的web应用,从controller到dao。不考虑具体实现,只是先对整体架构有一个清晰的了解。日后在分层细述每一层的细节。

相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler



我们将用到如下jar包:

有不少人问我,这段代码是什么:


applicationContext.xml什么都不干,它只管涉及到整体需要的配置,并且集中管理。
这里引入了两个配置文件service.xml和dao.xml分别用于业务、数据处理。
service.xml

注意,这里通过<context:component-scan />标签指定了业务层的基础包路径——“org.zlex.spring.service”。也就是说,业务层相关实现均在这一层。这是有必要的分层之一。
dao.xml

dao层如法炮制,包路径是"org.zlex.spring.dao"。从这个角度看,注解还是很方便的!
最后,我们看看servlet.xml

包路径配置就不细说了,都是一个概念。最重要的时候后面两个配置,这将使得注解生效!
“org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping”是默认实现,可以不写,Spring容器默认会默认使用该类。
“org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter”直接关系到多动作控制器配置是否可用!
简单看一下代码结构,如图:

Account类是来存储账户信息,属于域对象,极为简单,代码如下所示:
Account.java
 
我们再来看看控制器,这就稍微复杂了一点代码如下所示:
AccountController .java
 
同时,JSR-250标准注解,推荐使用@Resource来代替Spring专有的@Autowired注解。
大家知道就可以了,具体使用何种标准由项目说了算!
最后,来看看核心方法:
 
对于方法名,我们可以随意定!方法中的参数,类似于“HttpServletRequest request, HttpServletResponse response”,只要你需要方法可以是有参也可以是无参!
解析来看Service层,分为接口和实现:
AccountService.java
 
接下来,我们来看持久层:AccountDao和AccountDaoImpl类
AccountDao.java
 

代码见附件!

顺便说一句:在Spring之前的XML配置中,如果你想在一个类中获得文件可以通过在xml配置这个类的某个属性。在注解的方式(Spring3.0)中,你可以使用@Value来指定这个文件。
例如,我们想要在一个类中获得一个文件,可以这样写:
 

容器中加载这个Properties文件:


这样,我们就能通过注解@Value获得/WEB-INF/database.properties这个文件!
如果我们想要获得注入在xml中的某个类,例如dataSource(<bean id ="dataSource">)可以在注解的类中这么写:
 

相关参考:
Spring 注解学习手札(一) 构建简单Web应用
Spring 注解学习手札(二) 控制层梳理
Spring 注解学习手札(三) 表单页面处理
Spring 注解学习手札(四) 持久层浅析
Spring 注解学习手札(五) 业务层事务处理
Spring 注解学习手札(六) 测试
Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
Spring 注解学习手札(八) 补遗——@ExceptionHandler

看起来不错,就是有点不太懂。这些annotation 是spring 定义的吗? 也就是要和记住一般的语法一样,把他们记下吗?要用spring 的注解,这就是,是不是》? 看起来不错,就是有点不太懂。这些annotation 是spring 定义的吗? 也就是要和记住一般的语法一样,把他们记下吗?要用spring 的注解,这就是,是不是》?
大部分都是spring的注解,另有java自身的注解!
关于注解选择,官方建议当两种注解都可用,或者说两种注解功能想近时,优先考虑java官方注解。不过我感觉,还是纯spring注解好用,如果你不打算做架构迁移的话。 16 楼 彩虹神 2012-09-01 写的真好, 一定要看完全部. 17 楼 yzhw 2012-09-13 异常处理和参数验证有吗? 18 楼 snowolf 2012-09-14 yzhw 写道异常处理和参数验证有吗?
异常处理后面有补充,验证可能不多,有空我补上。 19 楼 yu_duo 2012-09-18 太好了,配置文件那段一直找不到什么讲的好的例子,今天看到了一个完整的很感谢您的分享。

读书人网 >Web前端

热点推荐