Springside技术参考手册
SpringBlade开发手册说明书
Home欢迎使用SpringBlade,以下为快速导航。
1.SpringBlade开发手册2.SpringBlade会员计划3.开源版与商业版功能对比Release V3.7.0JDK 1.8+license Apache 2Spring Cloud2021Spring Boot 2.7Author Small Chill Copyright@BladeX若需要咨询商业版事宜,请添加我们的官方微信咨询哦功能开源版 ->点击前往商业版 ->点击前往1. 适用范围可用于个人学习使用,小微企业免费的架构方案可用于企业商业化架构,从小型到大型系统的完整架构方案2. 生产能力功能较少,需要花费时间与人力进行二开才能作为商业化架构功能完善,经过生产检验,很多功能开箱即用,可以直接进行商业化开发3. 更新频率更新频率低,一到二月更新一次版本,问题响应较慢更新频率高,随时会将新功能、bug修复推送至dev分支,问题响应较快4. 组件封装组件化封装较少,满足基本项目需求,若有新的需求还需自行开发集成组件化封装较多,提供更多demo集成,适应多种场景需求,提高开发效率5. 数据库种类仅支持Mysql 支持Mysql、PostgreSQL、Oracle、SqlServer、达梦、崖山,支持更多场景选择6. 鉴权方案采用自研Token方案,拓展受限采用Oauth2+自研Token方案,拓展集成灵活7. 多租户系统只有最基础的多租户功能对租户插件深度定制,支持多租户背景、域名、账号额度、过期时间等配置8. 多租户数据隔离只支持单数据库字段隔离支持数据库与租户一对一、一对多、多对多等灵活的模式,符合中国式租户需求9. 多租户对象存储只有简易的七牛、阿里云集成,无法动态配置集成七牛、阿里云、腾讯云、minio等对象存储,支持租户在线配置到私有库10. 多租户短信服务暂无短信封装集成七牛、阿里云、腾讯云、云片等短信服务,支持租户在线配置到私有库11. 动态数据权限暂无数据权限高度灵活,提供注解+Web可视化两种配置方式,Web配置无需重启直接生效12. 动态接口权限暂无接口权限高度灵活,提供注解+Web可视化两种配置方式,Web配置无需重启直接生效13. 全能代码生成器暂无全能代码生成器支持自定义模型、模版 、业务建模,在线配置,不再为重复工作发愁14. 钉钉监控告警暂无钉钉监控告警增强监控,微服务上下线集成钉钉告警,提高应对风险能力15. 分布式任务调度暂无分布式任务调度极简集成xxl-job,支持分布式任务调度功能16. 分布式日志模块暂无分布式日志模块集成7.x版本ELK,支持分布式日志追踪功能17. 消息队列暂无消息队列完美集成Kafka、Rabbit、SpringCloud Stream等消息队列18. Dubbo暂无Dubbo集成极简集成Dubbo最新版,给微服务远程调用增加新的解决方案19. 令牌状态可配暂无令牌状态可配增强JWT,Token默认无状态,增加配置可保存至redis实现有状态模式20. API报文加密暂无API报文加密支持API全局报文加密,提高系统的安全等级,大大降低系统损失的风险21. 工作流暂无工作流深度定制SpringCloud分布式场景的Flowable工作流,为复杂流程保驾护航22. Prometheus监控暂无Prometheus监控集成Prometheus全方位监控体系23. 移动端架构暂无移动端架构提供基于UniApp的跨平台移动端架构24. 规则引擎暂无规则引擎集成LiteFlow轻量级规则引擎,业务解耦更轻松25. 应用市场暂无应用市场商业用户可将自己开发的产品上架至应用市场,拓展BladeX生态圈开源版与商业版功能对比BladeX与Avue深度合作,联合版可视化数据大屏解决方案授权:26. 数据大屏暂无数据大屏前往体验。
Springline开发框架手册
1.前言1.1.Web开发技术发展回顾图:动态Web编程技术的发展历史随着Internet技术的广泛使用,Web技术已经广泛应用于Internet上,但早期的Web应用全部是静态的HTML页面,用于将一些文本信息呈现给浏览者,但这些信息是固定写在HTML页面里的,该页面不具备及用户交互的能力,没有动态显示的功能。
很自然地,人们希望Web应用里应该包含一些能动态执行的页面,最早的CGI(通用网关接口)技术满足了该要求,CGI技术使得Web应用可以及客户端浏览器交互,不再需要使用静态的HTML页面。
CGI技术可以从数据库读取信息,将这些信息呈现给用户;还可以获取用户的请求参数,并将这些参数保存到数据库里。
CGI技术开启了动态Web应用的时代,给了这种技术无限的可能性。
但CGI技术存在很多缺点,其中最大的缺点就是开发动态Web应用难度非常大,而且在性能等各方面也存在限制。
到1997年时,随着Java语言的广泛使用,Servlet技术迅速成为动态Web应用的主要开发技术。
Servlet是JAVA平台下CGI技术的代替品。
在Servlet技术规范下,浏览器向Web服务器内指定的Servlet发送请求,Web服务器根据Servlet生成对客户端的响应。
图:Servlet的响应流程图实际上,这是后来所有的动态Web编程技术所使用的模型,这种模型都需要一个动态的程序,或者一个动态页面,当客户端向该动态程序或动态页面发送请求时,Web服务器根据该动态程序来生成对客户端的响应。
Servlet一种在JAVA代码中嵌入HTML的方式,需要在JAVA代码中一行一行的进行HTML代码的生成及输出,在现在的技术条件下,我们简直无法想象当时JAVA WEB开发的复杂度。
到了1998年,微软发布了ASP 2.0。
它是Windows NT 4 Option Pack的一部分,作为IIS 4.0的外接式附件。
它及ASP 1.0的主要区别在于它的外部组件是可以初始化的,这样,在ASP程序内部的所有组件都有了独立的内存空间,并可以进行事务处理。
spring开发参考手册中文
轻量级容器的目标是避免上面所有这些麻烦ing!
Table 3.1. Examples of properties
表达式
说明
name
表示属性“name”,对应的方法是 getName()或者 isName()或者
setName()
表示属性“ account”的嵌套属性“name”,对应的方法是
getAccount().setName()或者 getAccount().getName()
考虑如下两个类: public class Company {
private String name; private Employee managingDirector; public String getName() {
return ; } public void setName(String name) {
这一章首先介绍了轻量级容器的总体设计,随后将简单介绍 Spring 除 IoC 实现之外的特性。简 单说,这些特性包括:
* 内置 AOP 支持,例如在 EJB 容器之外提供声明式事务管理
/5team/springframework
Spring reference 中文版 1.0
account[2]
表示带索引属性“account”的第三个元素。带索引属性可以是 array
类型、list 类型或者其他普通的 collection
下面你会找到几个使用 BeanWrapper 接口读取和设置属性的例子。
Spring Framework 开发参考手册
第 3 章 Beans, BeanFactory和ApplicationContext3.1. 简介在Spring中,两个最基本最重要的包是 org.springframework.beans 和org.springframework.context. 这两个包中的代码为Spring的反向控制特性(也叫作依赖注射)提供了基础。
BeanFactory提供了一种先进的配置机制来管理任何种类bean(对象),这种配置机制考虑到任何一种可能的存储方式。
ApplicationContext建立在BeanFactory之上,并增加了其他的功能,比如更容易同Spring AOP特性整合,消息资源处理(用于国际化),事件传递,以声明的方式创建ApplicationContext,可选的父上下文和与应用层相关的上下文(比如WebApplicationContext),以及其他方面的增强。
简而言之,BeanFactory提供了配置框架和基本的功能,而ApplicationContext为它增加了更强的功能,这些功能中的一些或许更加接近J2EE并且围绕企业级应用。
一般来说,ApplicationContext是BeanFactory的完全超集,任何BeanFactory功能和行为的描述也同样被认为适用于ApplicationContext用户有时不能确定BeanFactory和ApplicationContext中哪一个在特定场合下更适合。
通常大部分在J2EE环境的应用中,最好选择使用ApplicationContext,因为它不仅提供了BeanFactory所有的特性以及它自己附加的特性,而且还提供以声明的方式使用一些功能,这通常是令人满意的。
BeanFactory主要是在非常关注内存使用的情况下(比如在一个每kb都要计算的applet中)使用,而且你也不需要用到ApplicationContext的所有特性。
这一章粗略地分为两部分,第一部分包括对BeanFactory和ApplicationContext 都适用的一些基本原则。
springside3个人学习笔记整理(2)
目标:对生成的实例项目分析Springside3.3.4 View层权限使用了Spring Security 2.0.5和struts2关于Spring Security请参考springside使用——Spring Security 2和struts2的一些资料整理/peachpi/article/details/6283453SpringSide 3 中的安全框架Spring Security 2.0/shangpusp/article/details/5494563非常优秀的权限管理框架-- Spring Security/wenlin56/article/details/6081022struts2的配置使用了convention plugin,实现struts零配置,请参考struts.xmlStruts使用convention-plugin实现零配置/blog/398263convention plugin1. 默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。
如:<constant name="struts.convention.result.path"value="/WEB-INF/page"/>将路径配置到了WEB-INF/page 下。
2. 默认包路径包含action,actions,struts,struts2的所有包都会被struts 作为含有Action类的路径来搜索。
你可以通过设置struts.convention.package.locators属性来修改这个配置。
如:<constant name="struts.convention.package.locators"value="web,action"/>则定义了在项目中,包路径包含web和action的将被视为Action存在的路径来进行搜索。
Spring Security 5.1 中文 参考手册 中文文档
VPN或IP安全性来确保只有经过授权的系统才能尝试连接。 在企业环境中,您可以部署一个DMZ,将面向公众的服务器与后端数据库和应用程序服务器分开。 您的操作系
统也将扮演重要角色,解决诸如以无特权用户身份运行进程等问题并最大限度提高文件系统安全性。 操作系统通常也会配置自己的防火墙。 希望在这个过程中的某个地方 你会试图阻止对系统的拒绝服务和暴力攻击。 入侵检测系统对于监视和响应攻击也特别有用,因为这些系统能够采取保护措施,例如实时阻止侵入TCP / IP地址。 转移到 更高层,您的Java虚拟机将有望配置为最大限度地减少授予不同Java类型的权限,然后您的应用程序将添加自己的问题特定于域的安全配置。 Spring Security使后面的这个 领域 - 应用程序的安全性更容易。 当然,您需要正确处理上面提到的所有安全层,以及包含每个层的管理因素。 这些管理因素的非详尽清单将包括安全公告监控,修补,人员审查,审计,变更控制,工程 管理系统,数据备份,灾难恢复,性能基准测试,负载监控,集中式日志记录,事件响应程序等。 由于Spring Security专注于帮助企业应用程序安全层,因此您会发现有多少不同的需求与业务问题域相同。 银行应用程序对电子商务应用程序有不同的需求。 电子商务应 用程序对企业销售人员自动化工具有不同的需求。 这些自定义要求使应用程序安全性变得有趣,富有挑战性和有益。 请首先阅读Chapter 1, Getting Started的全部内容。 这将向您介绍框架和基于命名空间的配置系统,您可以使用该系统快速启动和运行。 为了更好地理解Spring Security的 工作原理以及您可能需要使用的一些类,请阅读Part II, “Architecture and Implementation” 。 本指南的其余部分采用更传统的参考样式,旨在根据需要进行阅读。 我们还建 议您尽可能多地阅读应用程序安全问题。 Spring Security不是解决所有安全问题的万能药。 从一开始,应用程序的设计就要考虑到安全性,这一点很重要。 试图改造它并 不是一个好主意。 特别是,如果您正在构建Web应用程序,则应该意识到许多潜在的漏洞,例如跨站脚本,请求伪造和会话劫持,您应该从一开始就考虑这些漏洞。
Spring框架参考文档-5.0.0-中文完整版
Spring框架参考文档-5.0.0-中文完整版AuthorsRod Johnson , Juergen Hoeller , Keith Donald , Colin Sampaleanu , Rob Harrop , Thomas Risberg , Alef Arendsen , Darren Davison , Dmitriy Kopylenko , Mark Pollack , Thierry Templier , Erwin Vervaet , Portia Tung , Ben Hale , Adrian Colyer , John Lewis , Costin Leau , Mark Fisher , Sam Brannen , Ramnivas Laddad , Arjen Poutsma , Chris Beams , Tareq Abedrabbo , Andy Clement , Dave Syer , Oliver Gierke , Rossen Stoyanchev , Phillip Webb , Rob Winch , Brian Clozel , Stephane Nicoll , Sebastien Deleuze版本号:5.0.0.RELEASECopyright ? 2004-2016Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically.文档官网:https://docs.spring.io/spring/docs/5.0.0.RELEASE/spring-framework-reference/index.html现在官网的5.0.0已经在2017年9月28日出了release版,为此翻译了5.0.0版本(从4.3.10升级到此版本,如果还在使用4.3.10版本,请看本人的前一个版本),翻译前后历时15天,十多次的修改和校对。
入门手册-SpringSide3.3.4安装和部署
SpringSid e3.3.4部署miniweb应用: 2011-6-17 执行quick-start.bat(mvn install)接下来还会Build 一个什么mini-web Archetype 生成模板..然后分别弹出四个窗口:一个是H2数据库启动,另外三个分别是三个项目.有这个错误也没事,不妨碍我们进行接下来的演示:mini-web:mini-servie:showcase:项目模板(archetype-catal og.xml) 看看.m2除了从中央仓库复制的jar包还还有哪些东东:<?xml version="1.0" encoding="UTF-8"?><archetype-catalogxsi:schemaLocation="/plugins/maven-archetype-plugin/archetype-ca talog/1.0.0 /xsd/archetype-catalog-1.0.0.xsd" xmlns="/plugins/maven-archetype-plugin/archetype-catalog/1.0.0" xmlns:xsi="/2001/XMLSchema-instance"><archetypes><archetype><groupId>org.springside</groupId><artifactId>mini-web-archetype</artifactId><version>3.3.4</version><description>SpringSide's Mini-Web Archetype(xuyuantree)</description></archetype></archetypes></archetype-catalog>这个其实是用来生成项目滴.examples中放的是三个项目的war包.即已经部署好的.可以直接访问.mimi-web-archetype:放的是mini-web-archetype-3.3.4.jar包.是用来可以直接调用或者使用Maven命令行直接生成项目滴.执行generate-project.bat(mvn archetype:generate)1:local->mini-web-archetype这里就是生成的本地模板GroupId: 包名ArtifactId: 项目名使用Maven3:更改.m2\settings.xml的localRepository为:D:\repository到.m2\repository\org\springside下把springside整个目录拷贝到D:\repository现在就可以把.m2下的repository删掉.如果不放心可以改为其他的名字.注意:arhetype-catalog.xml是不能删的.接下来在SpringSide根目录下执行generate-project.bat.能执行成功,说明我们成功把UserHome下的.m2\repository设置到我们自己想要的目录下.但是我们还没有把springside自带的maven转为maven3.那么上面为设么执行generate-project.bat还是可以成功生成项目呢?因为我们设置的M2_HOME还是SpringSide自带的Maven2.@echo offecho [INFO] 确保已用mvn install安裝tools\maven\archetype中的mini-web項目模板set MVN=mvnif exist "tools\maven\apache-maven-2.2.1\"set MVN="%cd%\tools\maven\apache-maven-2.2.1\bin\mvn.bat"echo Maven命令为%MVN%mkdir generated-projectscd generated-projectscall mvn archetype:generate -DarchetypeCatalog=localpause所以如果我们要想执行generated-project.bat来生成项目,需要更改执行的mvn.bat的注意,我们只是执行generate-project.bat采用Maven3,而不是连同执行quick-start.bat也采用Maven3. 如果执行quick-start.bat也用Maven3的话,那quick-start.bat也要更改里面的内容的.更改M2_HOME: D:\SOFT\springside-3.3.4\tools\maven\apache-maven-2.2.1 为:C:\apache-maven-3.0.3此时如果我们执行generate-project.bat:会发现虽然我们改了M2_HOME的配置,但还是能够执行成功.这是为什么呢.而实际上此时执行的还是SpringSide自带的Maven.看打印的Maven命令就知道了:虽然这样子没有问题,但是用的还是Maven2的东西.如果我们想用Maven3的东西.是要修改generate-project.bat让他执行到Maven3的bin\mvn.bat的.而实际上SpringSide官网已经说了:不建议这么做,这样更改了SpringSide发布包里面的内容.环保源码版如果已经是SpringSide的老用户,那就不必每个版本都下载一百多兆的all in one版,下个几百K的源码版就足够了。
springside3个人学习笔记整理(2)
目标:对生成的实例项目分析Springside3.3.4 View层权限使用了Spring Security 2.0.5和struts2关于Spring Security请参考springside使用——Spring Security 2和struts2的一些资料整理/peachpi/article/details/6283453SpringSide 3 中的安全框架Spring Security 2.0/shangpusp/article/details/5494563非常优秀的权限管理框架-- Spring Security/wenlin56/article/details/6081022struts2的配置使用了convention plugin,实现struts零配置,请参考struts.xmlStruts使用convention-plugin实现零配置/blog/398263convention plugin1. 默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。
如:<constant name="struts.convention.result.path"value="/WEB-INF/page"/>将路径配置到了WEB-INF/page 下。
2. 默认包路径包含action,actions,struts,struts2的所有包都会被struts 作为含有Action类的路径来搜索。
你可以通过设置struts.convention.package.locators属性来修改这个配置。
如:<constant name="struts.convention.package.locators"value="web,action"/>则定义了在项目中,包路径包含web和action的将被视为Action存在的路径来进行搜索。
springSide3框架的笔记
springSide3框架的笔记首先,从官网下载的springSide3并不具备我所需要的jar包,几个列子和我的编写习惯有很大冲突。
仔细观察目录结构发现无法像struts2.0一样,把列子改一下就可以架设成功了。
没办法,下载包用处不是很大,还是看文档把——/display/springside3/Home。
在文档中,首先看到了“快速开发指南”,进去看看。
一键式安装,唉,没兴趣,看看别的。
还是看看“完全技术参考手册”吧,进去后看到。
1. 总述∙架构风格简述∙CRUD程序开发指南∙Spring Framework2. 持久化∙Hibernate、Spring Jdbc∙数据库 - Derby、MySQL、Oracle2. Web∙MVC - Struts2、View - JSP2/Taglib、JQuery3 企业服务∙Web Service - JAX-WS2(CXF)、SoapUI 工具∙JMX∙安全 - Spring Security 2∙应用服务器 - Tomcat,Glassfish,Weblogic4.常见事项∙事务∙日志 - Slf4j+Logback∙缓存 - EhCache∙Utils工具类5 开发过程∙开发实践指南不用说先看看前四项把,只是看看而已。
好了,5分钟到了看完了把。
开始实践把。
开始看第五项“开发实践指南”,重点在这里:1. SpringSide风格项目∙生成SpringSide风格的项目进去后:一、原理SpringSide使用maven的archetype插件进行项目生成,新版的archetype2.0插件比以往有了大幅提升。
SpringSide3.0在archtypes目录里存放使用Velocity语法的项目模板。
新生成的项目中将包含保证能跑起来的项目骨架、配置文件与示例代码。
二、预要求∙设置环境变量JAVA_HOME指向JDK5.0安装目录。
∙下载Maven2.0.9(all in one版已自带),并在环境变量PATH中添加 maven下载目录/bin。
Spring中文开发详细手册
static{
User defaultAdmin = new User("Moxie","pass");
users.put(defaultAdmin.getName(),defaultAdmin);
}
public MemoryUserPersist (){
= name;
this.password = password;
}
//相应的get/set方法
………..
}
持久化类有两个方法,分别在内存中保存和获取User对象。代码如下:
MemoryUserPersist.java
public class MemoryUserPersist {
Spring
Spring的基础架构起源于2000年早期,它是Rod Johnson在一些成功的商业项目中构建的基础设施。
在2002后期,Rod Johnson发布了《Expert One-on-One J2EE Design and Development》一书,并随书提供了一个初步的开发框架实现——interface21开发包,interface21就是书中阐述的思想的具体实现。后来,Rod Johnson在interface21开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架——Spring。
JavaBean提供了应用程序配置的最好方法。
在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。
Spring
Spring不是一个“标准”。Spring不是J2EE规范的一部分,没有通过JCP(Java Community Process)的审核认可。
springside3学习
使用SpringSide 3.1.4.3开发Web项目的全过程(上)时间:2009-07-21 00:07 来源:未知作者:京山游侠CSDN IE QQ百度我挖Google POCO Yahoo新浪365Key天极和讯博拉Live奇客鲜果收客饭否叽歪挖客核心提示:SpringSide 3.1.4.3是目前SpringSide的最新版本,也是完成度比较高的一个版本,用来做实际项目的开发应该丝毫不成问题。
这里写一下使用该版本开发一个简单Web项目的全过程,当然,最重要的是我自己的一些心得体会。
我的文章很长,只有耐下性子细看,才能体会SpringSide 3.1.4.3是目前SpringSide的最新版本,也是完成度比较高的一个版本,用来做实际项目的开发应该丝毫不成问题。
这里写一下使用该版本开发一个简单Web项目的全过程,当然,最重要的是我自己的一些心得体会。
我的文章很长,只有耐下性子细看,才能体会个中三味。
第一步、下载SpringSide 3.1.4.3 all-in-one版。
这个过程太简单了,SpringSide的官方网站是,去那里就可以下载了,all-in-one版当然是懒人们的不二选择。
这里有一点很搞笑,该版本标的是SpringSide 3.1.4.3,但是下载后解压缩,解压缩出来的文件是springside-3.1.4.2,这可能是江南白衣的一点小小的失误,据我猜测,3.1.4.3较3.1.4.1的进步应该是加入了jsp-api.jar这一个库,希望白衣这次不要为了更改这个版本号上的失误而再推出一个新版本,如果真要推出新版本,怎么样也应该把我最近研究出来的多数据库的配置加进去。
第二步、安装SpringSide。
如果安装过SpringSide以前的版本,最好把用户目录下的.m2文件夹删掉,这个文件夹是Maven的本地仓库所在地,虽说Maven可以有效保证库文件不会发生版本冲突,但是删除这个文件夹会使安装过程加快,否则,SpringSide的安装过程会不停询问你是否覆盖某某文件。
SpringFrameworkAop参考手册中文版
Spring Framework Aop参考手册中文版6.2. @AspectJ 支持"@AspectJ"使用了Java 5的注解,可以将切面声明为普通的Java类。
AspectJ 5发布的AspectJ project中引入了这种@AspectJ风格。
Spring 2.0 使用了和AspectJ 5一样的注解,使用了AspectJ 提供的一个库来做切点(pointcut)解析和匹配。
但是,AOP在运行时仍旧是纯的Spring AOP,并不依赖于AspectJ 的编译器或者织入器(weaver)。
使用AspectJ的编译器或者织入器(weaver)的话就可以使用完整的AspectJ 语言,我们将在第 6.8 节“在Spring应用中使用Aspec tJ”中讨论这个问题。
6.2.1. 启用@AspectJ支持为了在Spring配置中使用@AspectJ aspects,你必须首先启用Spring对基于@AspectJ aspects的配置支持,自动代理(autoproxying)基于通知是否来自这些切面。
自动代理是指Spring会判断一个bean是否使用了一个或多个切面通知,并据此自动生成相应的代理以拦截其方法调用,并且确认通知是否如期进行。
通过在你的Spring的配置中引入下列元素来启用Spring对@AspectJ的支持:<aop:aspectj-autoproxy/>我们假使你正在使用附录 A, XML Schema-based configuration所描述的schema支持。
关于如何在aop的命名空间中引入这些标签,请参见第 A.2.6 节“The aop schema”如果你正在使用DTD,你仍旧可以通过在你的application context中添加如下定义来启用@AspectJ支持:<beanclass="org.springframework.aop.aspectj.annotation.AnnotationAwareAspe ctJAutoProxyCreator" />你需要在你的应用程序的classpath中引入两个AspectJ库:aspectjweaver.jar 和 aspectjrt.jar。
Spring 2.0技术手册说明书
图书基本信息书名:《Spring 2.0技术手册》13位ISBN编号:978712103985010位ISBN编号:7121039850出版时间:2007-4出版社:电子工业出版社作者:林信良页数:430版权说明:本站所提供下载的PDF图书仅提供预览和简介以及在线试读,请支持正版图书。
更多资源请访问:内容概要真的可以编辑?作者简介林信良,(网络化名良葛格),台湾大学电机工程学系毕,台升阳阳教育训练技术顾问、台湾升阳教育训练专业讲师;著作《Java学习笔记》、《Spring技术手册》、《Spring2.0技术手册》,译作《Ajax 实战手册》。
个人网站:/Gossip/index.html。
书籍目录目录导 读I第1章 认识Spring11.1 术语介绍21.2 控制反转(Inversion of Control)41.3 依赖注入(Dependency Injection)91.4 接下来的主题11第2章 Spring入门132.1 第一个Spring程序142.1.1 下载、设置Spring142.1.2 准备Spring设计环境(使用Eclipse)162.1.3 编写第一个Spring程序202.1.4 编写第二个Spring程序242.1.5 Spring 2.0的XML设置272.2 安装、使用Spring IDE282.2.1 安装Spring IDE282.2.2 使用Spring IDE302.3 接下来的主题33第3章 Bean、消息、事件353.1 Bean基本管理363.1.1 BeanFactory、ApplicationContext 363.1.2 Bean的识别名称与别名393.1.3 Bean的实例化403.1.4 Bean的scope423.1.5 Bean的生命周期433.1.6 Bean定义的继承453.2 Bean的依赖设置483.2.1 Type 2 IoC、Type 3 IoC483.2.2 依赖的值设置与参考523.2.3 自动绑定553.2.4 集合对象603.2.5 Spring 2.0的标签683.2.6 Lookup Method Injection713.3 Bean高级管理733.3.1 非XML定义文件的配置方式743.3.2 Aware相关接口763.3.3 BeanPostProcessor783.3.4 BeanFactoryPostProcessor813.3.5 PropertyPlaceholderConfigurer813.3.6 PropertyOverrideConfigurer833.3.7 CustomEditorConfigurer843.4 资源、消息、事件883.4.1 资源的取得883.4.2 解析文字消息893.4.3 监听事件923.4.4 事件传播933.5 接下来的主题95第4章 Spring AOP974.1 AOP入门984.1.1 从代理机制初探AOP984.1.2 AOP观念与术语1054.1.3 Spring AOP1084.2 Advices1094.2.1 Before Advice1094.2.2 After Advice1134.2.3 Around Advice1154.2.4 Throw Advice1174.3 Pointcut、Advisor1214.3.1 NameMatchMethodPointcutAdvisor 1214.3.2 RegExpMethodPointcutAdvisor1244.3.3 ControlFlowPointcut1264.3.4 Pointcut接口1294.3.5 Pointcut交集、并集操作1314.4 Introduction1324.4.1 IntroductionInterceptor1334.4.2 DelegatingIntroductionInterceptor1374.5 Autoproxing1414.5.1 BeanNameAutoProxyCreator1414.5.2 DefaultAdvisorAutoProxyCreator1424.6 Spring 2.0的AOP支持1444.6.1 Before Advice:基于XML Schema1444.6.2 Before Advice:基于Annotation1474.6.3 Spring 2.0的Pointcut定义1494.6.4 After Returning Advice:基于XML Schema 1514.6.5 After Returning Advice:基于Annotation 1534.6.6 After Throwing Advice:基于XML Schema 1554.6.7 After Throwing Advice:基于Annotation 1584.6.8 Around Advice:基于XML Schema 1594.6.9 Around Advice:基于Annotation1614.7 接下来的主题162第5章 JDBC、事务支持1635.1 Spring持久层入门1645.1.1 Spring的DAO支持1645.1.2 DataSource注入1695.1.3 DataSource置换1755.2 JDBC支持1775.2.1 使用JdbcTemplate1775.2.2 执行与更新JdbcTemplate1795.2.3 JdbcTemplate查询1835.2.4 JdbcTemplate的Lob支持1855.2.5 以对象方式进行操作1875.2.6 DataFieldMaxValueIncrementer1925.2.7 Spring 2.0的NamedParameterJdbcTemplate 1925.2.8 Spring 2.0的SimpleJdbcTemplate1945.3 JDBC事务管理1965.3.1 Spring对事务的支持1975.3.2 JDBC编程事务管理1995.3.3 JDBC声明事务管理2025.3.4 事务的属性介绍2065.3.5 TransactionAttributeSource、TransactionAttribute 2085.3.6 Spring 2.0声明式事务管理:基于XML Schmea 2125.3.7 Spring 2.0声明式事务管理:基于Annotation2145.4 接下来的主题216第6章 Hibernate与Spring2196.1 Hibernate入门2206.1.1 简介Hibernate2206.1.2 下载、设置Hibernate2226.1.3 第一个Hibernate程序2246.2 在Spring中整合Hibernate2316.2.1 SessionFactory 注入2326.2.2 HibernateTemplate2356.2.3 HibernateTemplate的Lob支持2376.2.4 Hibernate编程事务管理2406.2.5 Hibernate声明事务管理2426.3 接下来的主题248第7章 Spring Web MVC框架2497.1 Spring Web MVC入门2507.1.1 使用Eclipse Web Tools Platform2507.1.2 第一个Spring Web MVC程序2537.1.3 WebApplicationContext2577.1.4 Handler Mapping2617.1.5 Handler Interceptor2637.1.6 Controller继承架构2667.1.7 ModelAndView2697.1.8 View Resolver2717.1.9 Exception Resolver2747.2 Controller实现类2757.2.1 AbstractController2757.2.2 MultiActionController与ParameterMethodNameResolver 2777.2.3 MultiActionController与PropertiesMethodNameResolver 2807.2.4 ParameterizableViewController2847.2.5 AbstractCommandController2857.2.6 AbstractFormController2887.2.7 SimpleFormController2897.2.8 AbstractWizardFormController2947.2.9 ThrowawayController3007.3 搭配Controller的相关类3017.3.1 实现Validator3017.3.2 使用PropertyEditor3047.3.3 文件上传3097.4 接下来的主题313第8章 View层方案、Web框架整合3158.1 结合JSTL与Spring标签3168.1.1 结合JSTL3168.1.2 标签3198.1.3 数据绑定的几个方法3228.1.4 标签3258.1.5 标签3278.1.6 Spring 2.0的form标签3328.2 其他View技术3348.2.1 以Tiles为例3348.2.2 自制View Class3398.3 整合Struts框架3428.3.1 第一个Struts程序3428.3.2 在Struts中整合Spring3468.4 整合JSF框架3518.4.1 第一个JSF程序3518.4.2 在JSF中整合Spring3588.5 接下来的主题362第9章 API封装3639.1 远程3649.1.1 RMI3649.1.2 Hessian、Burlap3689.1.3 Http Invoker3719.2 邮件3739.2.1 简单邮件3739.2.2 HTML邮件3749.2.3 内嵌图片或附件3769.3 任务计划3799.3.1 使用TimerTask3799.3.2 使用MethodInvokingTimerTaskFactoryBean 3819.3.3 使用Quartz3839.3.4 使用MethodInvokingJobDetailFactoryBean 3879.4 接下来的主题389第10章 项目:Spring在线书签39110.1 程序概观39210.1.1 架构规划39210.1.2 采用技术39310.1.3 功能概述39410.2 Model设计39410.2.1 UserDAO39410.2.2 BookmarkDAO39810.2.3 SimpleMail40110.3 View设计40210.3.1 Tag Files40210.3.2 注册网页40410.3.3 登录网页40710.3.4 会员网页40910.3.5 加入书签网页41010.3.6 改变、取回密码网页41110.3.7 首页重新导向41310.4 Controller设计41410.4.1 RegisterController41410.4.2 LoginController41810.4.3 MemberController42010.4.4 ForgotController 42410.5 配置设置42610.5.1 设置web.xml 42610.5.2 设置web-config.xml 42710.5.3 设置model-config.xml 42910.6 接下来的主题430媒体关注与评论序对我来说,写书是一种想法的实现过程。
Spring side 使用方法
使用SpringSide的先决条件,要安装JDK 1.5或以上的版本,要设置JAVA_HOME 环境变量,要安装Eclipse IDE,我使用的是3.2版。
第一步,先下载SpringSide 2.0-RC1-all in one,下载地址如下图。
下载后解压缩,我解压后存放SpringSide的目录为D:\SpringSide2.0\,然后,运行该目录中的 springside.bat批处理文件,构建SpringSide项目,并可以看到SpringSide提供的两个示例应用。
第二步,将D:\SpringSide2.0\tools\springside-ide\target\eclipse\plugins目录中的org.springside.ide_1.0.0拷贝到Eclipse的plugins目录中。
第三步,打开Eclipse IDE,点菜单“窗口”-〉“首选项”,在弹出的窗口中设置SpringSide2 Home,如下图:然后,就可以在创建项目的时候选择SpringSide项目了,如下图:按照向导继续,会有一个选择组件的步骤,选择需要的组件即可。
在这里,我只选择了Hibernate、Struts等几个我用得到的组件。
其他的组件以后需要的时候再添加吧。
看一下目录结构,发现SpringSide2.0-RC1版本的目录结构比M1版要清晰得多,bin目录里面存放的都是ant脚本文件和bat批处理文件,构建项目的时候,可以根据需要选择运行其中不同的脚本。
其中的ant构建脚本在Eclipse中可以直接运行,而bat批处理文件,可以将它们定义为Eclipse的外部工具而运行。
有时候,为了加快工作速度,我也写一些批处理文件,也放到这个目录中,也定义为Eclipse的外部工具运行。
src目录存放Java源代码,test目录存放测试代码,webapp目录存放Web项目中用到的其它资源。
再来说一下这里提供的quickstart.bat批处理,这个批处理的作用是快速的编译、部署和启动项目,在这个过程中,它同时包含了启动Tomcat服务器和启动浏览器的动作。
Spring Driven Hose Reel操作手册说明书
Instruction ManualREV 11/30/18Spring Driven Hose Reel WARNING:Read carefully and understand all INSTRUCTIONS before operating. Failure to follow the safety rules and other basic safety precautions may result in serious personal injury.Save these instructions in a safe place and on hand so that they can be read when required. Keep these instructions to assist in future servicing.TECHNICAL DETAILSSAFETY PRECAUTIONS1. Use proper eye protection when assembling and using the hose reel.2. Keep children away from the work area.3. Personal injury and/or equipment damage may result if proper safety precautions are not observed.4. Ensure that reel is properly installed before connecting input and output hoses.5. Bleed fluid/gas pressure from system before servicing reel.6. Before connecting reel to supply line ensure that pressure does not exceed maximum working pressure rating of reel.7. Remember, even low pressure is very dangerous and can cause personal injury or death.8. If a leak occurs in the hose or reel, remove system pressure immediately.9. Ensure that reel, hose, and equipment being service are properly grounded.10. If reel ceases to unwind or rewind, remove system pressure immediately.11. Do not pull or jerk on hose.WARNING: Exposure of skin directly to pressurized air, or fluids could result in severe bodily injury.INSTALLATION1. Prior to mounting the hose reel, ensure that the supply line pressure does not exceed the maximum working pressure of the hose reel.2. Unpack and inspect reel for damage. Turn by hand to check for smooth operation.3. Check for completeness.Item No.28607152 (L860152)28607153 (L860153)28607154 (L860154)28608152 (M860152)28608153 (M860153)28608154 (M860154)28609152 (H860152)28609153 (H860153)NBR Rubber NBR Rubber NBR Rubber S.A.E.100R1 Wire Braid S.A.E.100R1 Wire Braid S.A.E.100R1 Wire Braid S.A.E.100R2 Wire Braid S.A.E.100R2 Wire Braid1/4"/6.3mm 3/8"/10mm 1/2"/12.5mm 1/4"/6.3mm 3/8"/10mm 1/2"/12.5mm 1/4"/6.3mm 3/8"/10mmMax Pressure Hose CapacityMaterial I.D.Length 15m/50ft 15m/50ft 15m/50ft 15m/50ft 15m/50ft 15m/50ft 15m/50ft 15m/50ft300Psi (20Bar)300Psi (20Bar)300Psi (20Bar)3260Psi (225Bar)2610Psi (180Bar)2320Psi (160Bar)5800Psi (400Bar)4785Psi (330Bar)E1I N S T A L L A A D J U S T M E N T SL I M I T E D W A R R A N T Y E X P L O D E D A N D P A R T S L I S TT R O U B L E S H O O T I N G S E R V I C E I N S T R U C T I O NSFloor Wall Ceiling4. Position the reel on the floor, wall or ceiling. Secure into place using four mounting bolts.5. Depending on where the reel is placed, it may be necessary to adjust the hose bumper and guide arm to use the hose properly. See the instructions on the next page to adjust the hose bumper and reposition the guide arm.ADJUSTMENTS- Spring tensionWARNING: Use extreme caution; reel under tension. Avoid releasing latch mechanism.1. If necessary, adjust spring tension on reel by adding or removing wraps of hose from spool, one wraps at a time, until desired tension is obtained. Add wraps to increase tension. Remove wraps to decrease tension.2. Pull out the hose until the latch pawl is engaged. Loose the hose bumper, then add wraps and decrease the wraps.CAUTION: When adding wraps of hose, be careful not to exceed the winding mechanism’s spring capacity. Add just enough wraps of hose to achieve the desired tension. Damage to the winding mechanism will result if spring is over-tensioned.- Adjusting the hose bumper1. Pull out the hose until the latch pawl is engaged. The hose bumper may be adjusted byloosening the slotted screws. Slide the bumper to the desired position and tighten the screws before pulling hose to disengage the latch pawl.- Removing and positioning Guide Arm1. Pull out hose until the latch pawl is engaged. Remove bumper by removing the slotted screws.2. Disengage the latch awl while maintaining a firm hold on spool. Turn the spool hand over hand approximately two or three revolutions in the direction of the direction of the drive spring until tension is removed.3. Remove the nuts and washer holding the guide arm and shift to base.4. Revolute the guide arm and adjust to any of the three positions hinted.E2T E C H N I C A L D E T A I L S S A F E T Y P R E C A U T I O N SI N S T A L L A T I O N L I M I T E D W A R R A N T Y E X P L O D E D A N D P A R T S L I S T T R O U B L E S H O O T I N G S E R V I C E I N S T R U C T I O N S5. According to each mounting application, recommend Guide Arm positions.6. Replace and tighten the nuts and washers.7. Tighten the drive spring by turning the spool two or three revolutions and engage the latch pawl.8. Pull the hose through the roller opening in the guide arm and replace the hose bumper.SERVICE INSTRUCTIONSCAUTION: Remove all tension before servicing. Hazards or unsafe practices MAY result in minor personal injury, product or property damage.WARNING: Before performing any service, always disconnect and lock outcompressed air or fluid, and remove all spring tension. Hazards or unsafepractices COULD result in severe personal injury or death.User servicing of the reel is limited to replacing input/output hoses only. Refer all other repairs to an authorized service person. Failure to do so can result in person injury and/or equipment damage and may void the warranty.- Replacing the hose1. To remove the hose2. Pull out the hose leaving 2 to 3 feet on the spool. Engage the latch pawl.3. Unthread the hose at the connection to the swivel tube. Remove the hose.4. To install the hose5. Route the hose through the guide arm rollers and opening of the spool. Apply thread tape or sealant to hose threads.6. Screw hose fitting into threaded fitting on swivel. Tighten connection with a wrench on fitting. Install hose bumper on working end of hose if required.7. Disengage latch pawl and allow hose to retract.- Replacing the swivel1. If the swivel leak, replace the O-ring or seal (#31) and washer (#30) by removing the lock washer (#40) and the part of the swivel shift.2. If the balls (#37) wear-out, replace by removing the lock washer (#40).3. Replace the New seal by clipping the lock washer (#40). Replace the part of the swivel shift by clipping the lock washer (#40).E3TECHNICALDETAILS SAFETYPRECAUTIONS I N S T A L L A TI O N LIMITEDWARRANTY EXPLODEDANDPARTSLIST TROUBLESHOOTINGE4T E C H N I C A L D E T A I L S S A F E T Y P R E C A U T I O N SI N S T A L L A T I O NA D J U S T M E N T S E X P L O D E D A N D P A R T S L I S TS E R V I C E I N S T R U C T I O N SLIMITED WARRANTY1. The manufacturer warrantees this hose reel against defects in material and craftsmanship, for a period of 36 months from date of purchase, but not including hose and O-ring parts.2. Manufacturer’s liability is limited to replacement or repair of defective material within the warranty period, when returned freight prepaid to the distributor or their designated service depot.3. The warranty does not cover damage caused by accident, misuse or faulty installation.4. The reel must be installed and maintained in compliance with the instructions.TROUBLE SHOOTINGProblem(s)Fluid path (plumbingand/or Swivel) is leakingor damagedHose witll not fully retractHose will not retract at allReel will not latchFluid leaks from swivelSwivel assembly in not moving freely or locking up Possible Cause a) Maximum pressue rating for reel has been exceeded b) Application is not compatible with plumbing and/or swivelseal materials.a) Outlet nozzle, gun or tool istoo heavy.b) Spring is fatigued.c) Field installed hose is too long.Spring has lost all tension or has possibly broken a) Incorrect operationb) Dog spring or locking cam is broken or worna) Swivel seals are damaged or wornb) Inlet hose is not flexibleInlet hose is not flexible causing side force on swivel Corrective Actiona) Replace or repair damaged components. Consult factory. Check maximum pressure rating of reel.b) Contact factory to determinechemical compatibility or environmental issues(i.e. temperature rating).a) Add spring tension. See "Spring Tension Adjustment". b) Add spring tension. See "Spring Tension Adjustment". Replace Spring Canister if required.c) Call local distributor for correctspecified hose length.Reinstall Spring Tension a) To latch the reel, pull out the hose and allow it to retract after hearing the first second or third "click".b) Replace dog spring or locking cam.Replace swivel seals. See "Swivel Seal Replacement".Caution: Be sure leak is not at Hose Fitting!Properly tighten inlet hose. Hand tighten fitting, plus 1/2 turn withwrench.Part No.123456789101112131415161718192021222324DescriptionNutSpring washerWasherBoltBracket armWasherRatchetWasherLock washerClick pulleyNutLock washerWasherShaftKeyGuide sub-plateDrumRoller axleRollerRollerRoller axleGuide plateBoltBaseQ’ty112911111182411112222141Part No.2526272829303132333435363738394041424344454647DescriptionDouble boltSpring coreSpringDrumSwivel shaftWasherO-ring or sealWasher--Swivel shaftBearing coverBall bearingBearing washerWasherLock washer Bracket arm-Double bolt Hose assembly ClampStopper assembly Ratchet spring Q’ty 3 1 1 1 1 2 1 1 --1 1 17 1 1 2 1 -1 1 1 1 1EXPLODED AND PARTS LISTE5TECHNICALDETAILS SAFETYPRECAUTIONS I N S T A L L A TI O N A DJ U S T M E N T S LIMITEDWARRANTY EXPLODEDANDPARTSLIST TROUBLESHOOTING SERVICEINSTRUCTIONS157克铜版纸Size: 145x210mm REV 11/30/18 3.02.01.012。
SpringSide开发实战
private String name; private String password; private String monicker; private String question; private String answer; private String email; private String qq; private Role role; private Integer score; private Date regTime; private Date loginTime; private Byte isDeleted; @Id @GeneratedValue(strategy = GenerationType.AUTO) public Integer getId { id; } public void Id(Integer id) { this .id = id; } public String getName { name; } public void Name(String name) { this .name = name; } public String getPassword { password; } public void Password(String password) { this .password = password; } public String getMonicker { monicker; } public void Monicker(String monicker) {
创建群组表: create table groups( id not null auto_increment primary key , name varchar ( 40 ) not null , creatorid not null , createtime timestamp not null default CURRENT_TIMESTAMP , isdeleted varchar ( 2 ) not null default ' 0 ' , index (groupname)); creatorid代表组创始人同时也是管理员这里同样设置群组不做物理删除 创建用户群组多对多映射辅助表: create table users_groups( id not null auto_increment primary key , userid not null , groupid not null , joime timestamp , status tiny , index (userid), index (groupid) ); 其中status列代表建立索引 设计完数据库就该设计领域对象了领域对象设计思路方法为先设计简单POJO然后再在POJO上添加 Hibernate Annotation来配置映射关系在进行Annotation配置时候可以从以下几个方面进行研究 1、使用什么样数据类型映射数据库中列类型? 2、对象的间是对、对多还是多对多关系? 3、关联对象的间哪个作为主控方?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Springside 3.3.2 技术参考手册1. 总述∙架构风格简述1.概述技术框架选型以工业化大规模软件开发为原则---主流的选型、适宜团队分工的架构,同时照顾轻量级快速开发的需求,Java版的约定大于配置的风格。
)在SpringSide的官方主页上,写着SpringSide 3 中包含的主流组件:Spring 2.5 + Hibernate 3 + Struts 2 + JSP 2.0 + JQuery + JAX-WS 2 (by Apache CXF 2) +SpringSecurity 2.0。
不过,如果你认为和SpringSide 2 相比,升级的只是版本号,那么你就大错特错了。
像我这样从SpringSide 2过来的人,如果能够详细对比SpringSide 2 和SpringSide 3,对于我们理解SpringSide 3肯定更加有帮助。
下面的内容是我自己的一些体会,不正确的地方欢迎大家指正。
从主要的架构来,依然是那么几层,先设计数据库,再写Entity层,再写Dao层,再写Action,然后使用JSP表现出来,其中的Entity和Dao层和Hibernate紧密相关,Action是Struts的主要部分,Spring作为粘合剂,把这些东西连在一起,并提供了一些机制简化编写这些层的工作。
SpringSide就是这样一个大的粘合体,省去了我们自己很多的粘合工作。
从SpringSide 2 到SpringSide 3,这些工作得到进一步的简化,我们开发起来就更爽了。
我认为,我们的开发模式,主要经历了这样的简化过程:第一阶段,代码加一大堆的配置文件第二阶段,代码加少量的配置文件第三阶段,代码加基本上等于零的配置文件这些进步是如何实现的呢?从第一阶段到第二阶段,主要靠的是Annotation,把一些大量的配置工作转移到了Java代码中,那么从第二阶段到第三阶段怎么实现呢?都已经Annotation了,你还有什么办法让配置文件更少?想不到吧!我也想不到,直到我看了SpringSide 3生成的项目,我才知道还有一个好东西叫自动扫描。
下面使用实际的例子进行说明。
作为示例,Hibernate是个不错的选择。
第一阶段,如果单独使用Hibernate,我们每写一个Entity类,就得同时写一个.hbm.xml文件,如果有很多Entity,就得写很多.hbm.xml文件,每修改一次Entity,也要同时记得修改.hbm.xml文件,相当的不方便,其目录结构如下图:第二阶段,使用Annotation,SpringSide 2 中就是这样的方式。
具体内容可以看我的另一篇博文《打通持久层的任督二脉》。
所以我用SpringSide 2 进行开发的时候,写Entity也是两个步骤,但是比第一阶段要简单。
就是先写一个Entity,Entity里面使用Annotation,如下图:然后修改配置文件,SpringSide 2 中专门为Hibernate的定义开辟了一个专门的xml文件dataAccessContext-hibernate.xml,里面关于SessionFactory的定义是我们很熟悉的。
我只需要将我的Entity类加入到里面就可以了,如下图中红笔圈出来的部分:第二阶段和第一阶段相比,配置文件简单多了,不需要维护那么多的.hbm.xml。
但是,每编写一个Entity,依然需要修改一下配置文件。
第三阶段就更了不起了,零配置文件,也就是说我们只管写Entity就行了,不需要管配置文件(当然,项目开始的时候还是要配置一次的)。
打开SpringSide 3生成的项目,果然找不到dataAccessContext-hibernate.xml文件。
那么是如何实现零配置的呢?靠的就是自动扫描,如下图中红笔圈出来的部分:上面讲Hibernate只是为了举例说明我的观点,事实上SpringSide 3 中的零配置可不仅仅只存在这一个地方。
Dao层也可以不用配置了。
在SpringSide 2 中,我们每写一个Dao,都需要在serviceContext.xml中加入这个类,如下图:SpringSide 3 中使用自动扫描了,如下图:以后编写Service后,再也不用修改配置文件了,只要我们在Service中使用如下Annotation:事务也不用配置了,在SpringSide 2 中,事务是这样配置的:SpringSide 3 中,事务配置是这样的:Action也不用配置了,不过使得Action零配置的代码却在web.xml中,如下图:还记得SpringSide 2 中的Struts配置代码吗?编写完Action类的代码后,还需要修改两个配置文件,如下:所以说,SpringSide 3 的一个优点就是让生活变得更加简单了。
在以上的截图中,SpringSide 2 项目用的是Eclipse 3.2,而SpringSide 3项目用的是Eclipse 3.4 For JavaEE Developers。
哪一个IDE更爽,那也是一目了然。
2.主要库栈∙JDK:JDK 6.0、 UTF-8.∙IOC container:Spring 3.∙ORM:Hibernate 3.3.∙Web:Struts 2.1、JSP 2.0、JQuery 1.4/Dojo Base 1.4.∙Web Service:基于Apache CXF 2.2的JAX-WS/JAXB 2.0规范, 基于Jersey的JAX-RS 规范.∙Security: Spring Security 3.0.3.层次说明3.1 entity - 领域模型层使用Sql First的开发模式,先设计数据库,参考DBA的性能意见而不要太片面追求OO 化的表结构。
然后纯手工编写entity与极少量的JPA annotation(约定大于配置), 也可以用hibernate-tools从数据库逆向生成后再作修改。
3.2 access - 资源访问层资源访问层包括对数据库、JMS、外部的WebService等的访问。
每个领域对象对应一个DAO类,继承于通用的HibernateDao<T>,所有以该对象为查询主体的HQL语句统一定义于DAO内并提供查询函数.在性能紧要而Hibernate又无法满足要求时,可混合使用JDBCTemplate。
3.3 service - 业务逻辑层Service层有两类对象,一类是领域对象管理类(Entity Manager),按领域对象划分,每个Manager类负责管理多个紧密关联的Entity的增删改查及其业务逻辑。
一类是业务服务类(Service),按业务脚本划分,可能会访问到多种领域对象与Manager 类。
用Spring的Transcation annotation定义事务。
对于Hibernate Lazy load的关联对象,在性能要求不高时可使用OpenSessionInView Filter,否则在Service层完成对象的初始化操作。
3.4 web - Web MVC层MVC框架使用Struts 2.1 这一老牌传统MVC框架 + Convention Plugin 实现零配置文件,每个Action实现一组页面操作。
View模板用JSP2.0 , 尽量使用纯html+JSP2.0 EL展示页面。
Javascript与Ajax使用JQuery或Dojo Base。
尽量采用CSS框架规范CSS的布局。
3.5 ws - WebService接口使用Java first的开发模式,通过JSR181 annotation标注Web Service接口,用JAXB-2.0 annotation标注Java-XML Mapping。
用DTO类实现Entity与外系统的解耦,用WSResult包裹返回结果与返回码,不使用Exception返回错误。
对于Restful服务,同样采用JAX-RS annotation标注。
3.6 security - 安全控制使用Spring Security的Filter 拦截URL,使用Spirng Security的taglib 拦截页面内容。
采用用户-角色-资源三层控制,角色-资源关系定义于XML的简化模式。
3.7 测试单元测试尽量采用MockObject的方式屏幕所有依赖对象/数据的访问,对于dao层与特别查询与特别数据库操作,采用集成测试连接实际数据库,基于 Spring的集成测试Context。
功能测试使用selenium测试主要用户故事的主流程及Javascript的效果,使用Jetty 嵌入式Web服务器与H2嵌入式数据库,使用DBUnit预备数据,使得整个测试可以快速运行,对测试环境没有太多的依赖。
4.常见问题4.1 什么时候使用基于接口编程?基于接口编程、Fascade层等等抽象封装都是有开发和维护的代价的,是否使用归根结底还是看在团队人员的分工情况,在大家不得不依赖这几项技术来解决相互的接口、契约问题时,自然就用了。
4.2 Package是先分层还是先分模块org.springside.模块A.web 还是 org.springside.web.模块A?同上,还是看团队人员的分工情况。
如果是每人从头到尾负责一个独立模块的可以先分模块。
反之,按层进行分工并鼓励层内重用的,可以考虑先分层。
目录结构描述1.公共目录结构完全采用maven的默认布局。
bin 命令脚本目录,详见后。
src main主源码目录main/java java 源文件main/resources 配置文件、属性文件 main/webapp Web 应用目录test 测试目录,结构与主源码目录相同unit 单元测试functional 功能测试data 测试数据生成器targetmaven 编译目录 2.bin 目录结构文件描述db-export / db-init 将当前数据库数据通过dbunit 导出到export-data.xml 。
执行src/main/sql 中的脚本初始化数据库schema,再通过dbunit 执行default-data.xml 初始化数据。
convert-h2将真正数据库的sql 转换为测试用的H2的sql 。
eclipse生成Eclipse 项目文件。
jetty / Jetty-debug 用jetty 快速运行本项目。
jetty-debug 支持eclipse 以debug 方式连入,端口为8000hibernate/generatecode从数据库逆向生成entity / dao / pojo2. 基础框架∙ Spring : Spring Framework1. 参考资料1.图书参考手册中文版(英文版) ()》 Apress2.文章∙Introduction to the Spring Framework 2.5 (TSS) Rod 老大的Spring介绍 Spring2.5版。