code
2. 基础框架
?
Spring: Spring Framework
1. 参考资料
? Spring资料(江南白衣博物馆) 1.图书
Spring 2.5 参考手册中文版(英文版) (满江红出品) ? 《Spring Recipes - A Problem-Solution Approach》 Apress,2008 ? 2.文章
?
Introduction to the Spring Framework 2.5 (TSS) Rod 老大的Spring介绍 Spring 2.5版。
3.笔记
Spring2.5的笔记 ? 以前的笔记part1 、part2、part3 有时间会 根据Spring的最新变化重新整理。 ?
Spring 2.5 参考手册中文版(满江红出品) ? 《Spring Recipes - A Problem-Solution Approach》 Apress,2008 Spring 2中较好的参考书。 ? 2. 选型
有人说guice好,但我们用Spring不仅是为了IOC,也为了Spring对JEE所做的封装,以及整个JavaEE界众多项目 (SpringSecurity,CXF、Struts2等)对它的依赖。
3. in SpringSide 3 - Mini示例使用的基本特性
?
属性配置及IOC容器
@Transcational annotation标注的事务管理功能 ? 集成测试的基类
?
3.1 IOC部分特征使用
详见Spring 笔记(江南白衣博物馆)
3.1.1 零配置文件的使用场合
Service,Dao 层在无特殊配置项时,可使用IOC Annotation进行配置 实现约定俗成大于配置的零配置文件.
而其他Database/SessionFactory ,SpringSecurity, CXF等需要进行参数配置时,仍然使用 XML 配置文件。
3.1.2 零配置文件的annotation
SpringSide3中使用@Component注释所有类别,在setter方法(不需要严格按setter命名)上 使用@Autowired 进行byType注入,如果需要byName注入则使用@Resource。 3.1.3 其他特征
使用@Required注释没有用@Autowired注释的属性,保证对象必然被注入,如果对象没有被注入则报错。
使用JSR250的@PostConstruct来定义在执行完所有setter注入后必须执行的函数。@PreDestroy来定义JDK关闭时通过 shutdownhook调用的函数。
ApplcationContext中默认设置Lazyload 与Autowired by type 仍然是必然的选择。 3.1.4 属性文件管理
在配置文件中,很有一些属性会在团队的开发环境,个人的开发环境,集成测试环境,以及生产环境集群的每台服务器中都有所不同的。详见Spring 笔记(江南白衣博物馆)
3.2 事务管理
在Service层用@Transactional 定义事务,详见Spring 笔记(江南白衣博物馆)。 注意Spring3.0 的@Transactional终于支持多个TransactionManager了, showcase里演示了多个数据源(不要求联合事务JTA)导致多个TransactionManager的情况。此时
@Transactional默 认使用
在AOP不到的地方,仍然有机会使用TransactionTemplate,(见Showcase的UserJdbcDao 与 LogJdbcWriter。)
3.3 集成测试的基类
详见 测试文档
4. in SpringSide3
4.1 Showcase中使用的Spring功能索引
? ? ? ? ? ?
JMX:JMX的Server端封装 JMS:JMS Template封装 Email:EMail客户端封装
Schedule:Quartz的封装,ScheduleExecutor的封装 Ehcache:Ehcache Server封装 Jdbc:Spring JdbcTemplate
4.2 SpringContextHolder
在Spring ApplicationContext启动时,先把Context放入个该类的静态变量,当模块的代码无法通过正常渠道获得Spring Context及其中的Bean时,可直接从该静态变量中获取。
4.3 AOP Aspect的写法
最新的写法,一切都写在java文件里,只要在applicationContext.xml里面定义一把scan就可以了。
? Database: ORM-Hibernate, Jdbc-Spring JdbcTemplate, 数据库 - H2、MySQL、Oracle, 数据库连接池-DBCP 1. 资料 数据库访问资料(江南白衣博物馆) ? JPA与Hibernate笔记(江南白衣博物馆) ? 2. 选型 因为最近一年来,JPA与EJB3的应用都没有想象中的多,在国内尤其突出。所以仍然使用纯Hibernate API+JPA1.0 annotation. 支持JPA2.0的Hibernate 3.5刚出来,要再继续观察。 3. in SpringSide 3 3.1 Entity类 1.Mini-Web中的User类是entity类的典型,集中演示了缓存,默认命名策略,多对多关系的定义和fetch策略,级联操作策略,子集合的 排序和缓存、非持久化属性, 见JPA与Hibernate笔记 2.为了统一ID的列名与生成算法,编写了IdEntity基类,演示了自增序列,数据库Sequence(Oracle), UUID(多数据库)的情形。(如果要在Oracle中为每个Entity对应不同Sequence时- 重载getId()函数)。 3.2 更换MySQL或Oralce等数据库 详见数据库说明。 1. H2 1.1 选型 H2嵌入式模式是功能测试的首选。测试要求数据库运行要非常快速,而且为免测试间数据的耦合,要能在每个测试间很快速的重建数据,H2刚好满足这个需求。 H2的主要对手是Derby,对比显示H2比Derby更快,而且有着非常好用的Web管理界面(在Web界面里写SQL时居然有表名列名的动态提示....) 1.2 in Springside 3 在/tools/h2目录里带了启动H2的命令(借助于maven管理的Jar包)。 另外,H2完全兼容hsqldb的语法,一般依赖数据库的开源项目都附带有hsqldb语法的初始化脚本。 SpringSide3 中在使用嵌入式 H2 提供快速功能测试。url 为 jdbc:h2:mem:mini-service;DB_CLOSE_DELAY=-1

