《Spring 2.0核心技术与最佳实践》第一天

本文介绍了Java开发从桌面系统到企业应用的变化,并详细讲解了JavaEE平台的优势。重点介绍了Spring框架,包括其设计理念、核心模块及实际应用场景,通过一个简单的示例展示了Spring在实际项目中的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 


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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值