当前位置: 首页 > 图文教程 > Java技术 > Java基础 > java Spring学习记录

Java基础
apatche组件的研究和使用
定时执行任务的三种方法
Java各种路径和参数
我看如何选择java和.net
Java关闭窗体的六种方法
java中容易迷惑的知识点
一个简单Thread缓冲池的实现
Java Swing中键盘事件的处理
解读内存优化编程
Java中Set的深入研究
一套JDOM操作XML文件的Base Class
Java堆和栈的区别
Thread类和Runable接口
java 定时执行任务,java定时器
递归(recursion)
java访问各种数据库连接代码
也谈JAVA值传参和引用传参
(转)一个牛人给java初学者的建议
java gui学习
JNI中文处理问题小结

Java基础 中的 java Spring学习记录


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 387 ::
收藏到网摘: n/a

最近有在学习spring,觉得spring 的功能实在是太强大了,现在总结以下今天的所学,感觉学到的有点少,不

过,要把spring学懂,估计还要加倍的努力才行,连老师都说,spring好多的人也只是会用,其实根本就不知道

底曾的实现,不过也学的挺过瘾的:
先简单的介绍以下我所了解的spring把,如果有高手看到这篇文章的话,希望能加以补充:
1,先说以下我们做开发时通常所用到的架构体系,首先要提到就是ejb,我们可以用ejb实去实现大的工

程项目,可是,ejb所带给我们的烦恼就是太复杂,要付出很大的努力去学习,去研究,还要不断的实现,不过

ejb隶属于j2ee中的内容,很多的时候,我们所接触的框架,大都是属于第三方的,可以说用ejb开发是j2ee开发

最黑暗的阶段,这是我们老师常说的一段话。今天我也来引用一下。
2,下面我们看看开发时我们都用什么?
(1),struts+spring+hibernate

(2),struts+spring+Ejb

(3),javaServer face+spring+iBATIS

(4),spring +spring+jdo

(5),flex+spring+hibernate

(6),struts+spring+jdbc


相信大家都见过这些,但是你看到spring在这其中的优势了吗?对了,spring的灵活性可以说是完美了,他可以

搭配任何其他的框架进行系统的开发,也就是说他是一个非侵入性框架。
3,我们来通过一个小小的例子来见识以下spring的强大功能吧:
还记得我们刚开始学习java所用到的helloworld吗?今天我就写他吧:
事先请先将spring的核心jar包导入到jdk下,大家应该知道放到什么地方把?对就是:
C:\Program Files\Java\jdk1.5.0_06\jre\lib\ext下

先来建一个包
bean,在spring 中我们所写的类大都是bean,因为spring的底层实现非常的完美,几乎不用我们写多少代码:

下面一段代码就是我们的HelloWorld.java:
package bean;

public class HelloWorld {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public void sayHello(){
System.out.println("hello, "+name);
}

}


不用多说,底下的xml文件是spring 中最核心的部分,可以这么说我们做spring的开发,实际上不是在写代码,

而是在填写配置文件:

可以随意命名,这里我命名成applicationContext.xml:


<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="hello" class="bean.Hello">
      <!--先来导如我们所写的bean 文件HelloWorld.java 有id这一属性是为了后面能通过这个自定义的id找

到这个bean,class后面跟的是类的路径-->
<property name="name" value="world"/>
<!--这是bean的一个属性,name跟的是属性值,value是我为它赋的值,-->
</bean>
</beans>



下面是一个测试类:


import java.io.FileInputStream;
import java.io.InputStream;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import bean.Hello;

public class Test {


public static void main(String[] args) {

try {


// Resource res=new ClassPathResource("applicationContext.xml");
//导入配置文件
// XmlBeanFactory factory= new XmlBeanFactory(res);
//声明工厂类对象
//
// Hello h =(Hello) factory.getBean("hello");
//通过工厂类拿出bean 对象,下同
// h.sayHello();
} catch (Exception e) {

e.printStackTrace();
}

// ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//
// Hello h = (Hello)ctx.getBean("hello");
// h.sayHello();


}

}


可以有多种方法去拿到bean里面的对象,这样的话我们如果修改的话,只要不牵扯到功能问题,都可以通过修改

配置文件来完成,这样的话总比我们不断的重复的写某一个功能类要强的多把?



可以跟spring中的这一功能做对比的是我们同样可以用老方法编写配置文件,用工厂模式去实现,不过那样的话

我们要写的代码就可能多很多了,是不是?这样看来,用spring开发简直就是天上下馅饼了,呵呵

4,补充两个概念:

ioc控制反转:inverse or control,怎样去拿到bean的对象,
iod: applicationContext,beanFactory
di依赖注入:depency injection
这两个东东可是spring的核心啊,理解了这两个东东开发过程就更加的明了了,可惜我还没明白,等明白了在说把。