序
java开发,从桌面系统到企业应用,从手机到智能卡.
随着J2EE1.5标准的发布,Sun将J2EE正式更名为JaveEE,JavaEE平台继承了Java语言的安全性和高可移植性,为企业应用的设计,开发,部署和管理提供了一套完善的解决方案,它包括了从前端Web界面到中间件,再到后端数据库系统的一系列技术和规范. 典型的JavaEE应用 是一个三层结构的系统:表示层,业务层和持久层.持久层最重要的功能便是完成对象/关系映射(O/R Mapping)的实现.
在现有的组件基础上构建应用程序.
第三方框架:
ORM框架的Hibernate,iBatis,JDO及最新的JPA;作为Web框架或组件的Struts,WebWork2,Velocity,FreeMarker,Tiles,JSF;
作为Web服务框架的Axis和XFire;作为安全框架的Acegi等;
例子: Live 在线书店,基于泛型的DAO休息设计,结合Lucene和 Compass
实现全文搜索功能,利用CAS架设单点登陆服务器,利用JMX实现对应用程序的远程监控,利用Filter实现无侵入的页面缓存等; Ant和XDoclet的使用
一初识Spring
越来越多的企业开发人员希望能快速开发安全可靠的,可扩展的分布式企业应用,尤其是以浏览器为前端的Web应用.
Spring轻量级框架,取代了复杂而烦琐的EJB.
Spring提出了以JavaBean为组件的模型,针对接口编程,使用依赖注入等许多优秀的设计思想.
Spring框架介绍
Spring 就是一个实现了AOP功能的IoC容器,包含了7个主要模块.
Spring AOP Spring ORM Spring Web Spring Web MVC
Spring DAO Spring Context
Spring 核心容器
Spring的核心IoC容器,定义了如何创建,管理和配置Bean. ,在一个Spring应用
程序中几乎所有的组件都被放到核心IoC容器中,并按照某种配置装配起来.
,作为开发人员,我们需要关心的是组件的编写,以及如何在Spring的IoC
容器中正确地装配它他.
Spring提供的应用程序上下文(Application Context)
封装了许多基本的系统服务,例如:访问JNDI,对国际化(I18N)的支持
,事件传播,资源装载,电子邮件服务等.
AOP即面向切面编程,通过AOP,可以动态为系统增加新的功能,而不影响原有系统的结构.
使用Spring DAO 的目的之一就是为了隔离应用程序的业务逻辑和数据访问逻辑.从而获得较高的可扩展性.
Spring的Web模块提供了一系列针对Web开发的基础功能,如:文件上传,自动绑定参数等. 这个模块还用于集成其他的Web框架,如struts. 他还可以无缝集成多种可替代JSP视图技术(Velocity,Freemaker)
二通过小例子快速入门 (ant,xdoclet使用, Live 在线书店)
Lucene是一个完全基于java的性能优秀人才开源全文搜索引擎.不过考虑到提供的API使用比较复杂,采用Compass这个封装了Lucene API 的开源框架即可轻实现全文搜索.
1.测试版本
java -version
2.导入外部java工程
设置 窗口/首选项/工作空间 文本文件编码 其他外设置一下(utf-8),自动构建,自动刷新
换到java透视图,
导入/现有工作空间中 下一步,选择根目录
把底下的"将项目复制到工作空间中"勾选上.
3.添加spring.jar的源代码,这样不公可以在Eclipse中浏览Spring的源代码,还可以更方便地跟踪调试.
在Java构建路径/库 spring.jar的+号
源代码连接...
4.体现Spring优点的小例子(光盘中HelloWorld工程)
package example.chapter2;
public interface HelloWorld {
void setName(String name);
String say();
}
package example.chapter2;
public class HelloWorldImpl implements HelloWorld {
private String name = null;
public void setName(String name) {
this.name = name;
}
public String say() {
if(name==null)
return "Hello, world!";
return "Hello, " + name + "!";
}
}
老的
package example.chapter2;
public class OldStartup {
public static void main(String[] args) {
HelloWorld hello = new HelloWorldImpl();
hello.setName("Spring");
System.out.println(hello.say());
}
}
缺点: .....
新的
Spring应用程序的运行流程:
1.初始化Spring的Bean工厂
2. 通过Bean工厂获得Bean实例
3.调用Bean实例实现应用程序所需的功能.
4 销毁Spring的Bean工厂
package example.chapter2;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
public class SpringStartup {
public static void main(String[] args) {
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml")); //1
HelloWorld hello = (HelloWorld)factory.getBean("hello");//2
System.out.println(hello.say());//3
factory.destroySingletons();//4
}
}
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="hello" class="example.chapter2.HelloWorldImpl">
<property name="name" value="Spring" />
</bean>
</beans>
要在Spring的Bean工厂中获取这个Bean实例,只需要提供相应的id.
5.Ant构建 (远行方式/Ant构建)
一个项目的构建过程一般可按照以下顺序进行
1定义各目录变量
2定义Classpath和外部任务
3初始化目录
4执行javac编译
5生成各类配置文件(如*.xml)
6.进行JUnit测试
7生成项目部署文件
build.xml src,lib是原来就有的目录,bin是自动生成的
<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="compile" basedir=".">
<property name="src.dir" value="src"/>
<property name="lib.dir" value="lib"/>
<property name="build.dir" value="bin"/>
<!-- 定义Classpath ,引入类包-->
<path id="master-classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>
<!-- 初始化${build.dir}目录,生成bin目录 -->
<target name="init">
<mkdir dir="${build.dir}"/>
</target>
<!-- 编译java源代码 产生class文件到bin中-->
<target name="compile" depends="init">
<mkdir dir="${build.dir}" />
<javac destdir="${build.dir}">
<classpath refid="master-classpath"/>
<src path="${src.dir}"/>
</javac>
<!-- 复制beans.xml到bin中 -->
<copy todir="${build.dir}">
<fileset file="${src.dir}/beans.xml"/>
</copy>
</target>
</project>
6.使用XDoclet自动生成配置文件(如何使用)
XDoclet只能以Ant的扩展进行任务形式运行,因此只有使用Ant作为项目构建工具时,才能享受到XDoclet带来的便捷.
XDoclet的核心是XJavaDoc,这个库负责解析Java代码.
光盘中有支持java5的XDoclet版本XDoclet 1.2.3(XJavaDoc 1.5)
xdoclet参考: http://xdoclet.sourceforge.net
Ant参考 http://ant.apache.org/manual/index.html