发布于 2014-12-11 13:23:21 | 266 次阅读 | 评论: 0 | 来源: PHPERZ
Spring Framework 开源j2ee框架
Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等
本文为大家讲解的是Spring的下载和安装,感兴趣的同学参考下.
Spring是什么呢?首先它是一个开源的项目,而且目前非常活跃;它是一个基于IOC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IOC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等
1、下载Spring(下载1)
下载:spring-frameword-3.05.RELEASE-with-docs.zip(Spring框架及文档) + spring-frameword-3.0.5.RELEASE-dependencies.zip(Spring框架编译和运行所依赖的第三方类库)
spring-frameword-3.05.RELEASE-with-docs.zip目录结构:
dist:包含Spring的JAR包;由20个分模块的Jar包组成,不同的Jar包提供不同的功能;一般Core Container对应的Jar包是使用Spring必须的
docs:存放Spring的相关文档,包含开发指南、API参考文档
projects:存放Spring分模块的项目结构,包括项目源代码、Maven的生成文件、Ant+lvy的生成文件
src:包含Spring分模块的项目源代码;每个Jar包包含一个分模块的项目的源代码
其他关于Spring的license和项目相关文件
2.将dist目录下所需模块的JAR包复制到项目CLASSPATH路径下;如需发布该应用,则将这些jar包一同发布即可;若无太多约束,建议复制dist目录下的全部jar包
3.解压spring-frameword-3.0.5.RELEASE-dependencies.zip;该目录下包含了Spring框架编译和 运行所依赖的第三方类库,具体需哪些jar文件,取决于应用所用到的项目;通常需增加common-logging等文件夹下的JAR文件
将Spring项目的dist路径下全部JAR包复制到Web应用WEB-INF/lib路径下
将Spring的spring-framework-3.0.5.RELEASE-dependencies.zip解压缩路径下所需第三方类库复制到Web应用WEB-INF/lib路径下
新建用户库为该项目增加Spring支持
Add Libraries --> User Library
编写主程序,该主程序仅仅初始化Spring容器,Spring容器是Spring应用的核心,该容器负责管理容器中的Java组件
public class SpringTest {
public static void main(String[] args) {
// 读取配置文件
创建Spring容器
创建Spring中的bean: Spring容器的bean组件是在容器创建和实例化的时候一起创建并初始化的
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
// ApplicationContext context = new FileSystemXmlApplicationContext(
// "beans.xml");
// Resource resource = new ClassPathResource("beans.xml");
// BeanFactory context = new XmlBeanFactory(resource);
// 输出Spring容器
System.out.println(context);
// 通过Spring容器获取
PersonService p = context.getBean("personService", PersonService.class);
p.info();
}
}
ApplicationContext实例是Spring容器,是Spring的核心,他是一个功能超强的巨大工厂;一旦获得Spring容器,就可通过该容器访问Spring容器中的Bean
Spring容器并不强制要求被管理组件是标准JavaBean
Spring容器根据配置文件信息,负责创建PersonService实例,并为其设置属性值-----这种由Spring容器为对象设置属性的方式被称为控制反转(Inversion of Control,IoC)
public class PersonService {
private String name;
// 省略name的setter、getter方法
public void info() {
System.out.println("此人名为:" + name);
}
}
bean.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd语义约束 -->
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" default-lazy-init="true”>
<!—将PersonService类部署成Spring容器中的Bean -->
<bean id="personService" class="com.PersonService" lazy-init="true" scope=”singleton” init-method="myInit" destroy-method="mhyDestroy">
普通属性注入:
<property name="name" value="zhangsan" />
类类型属性注入:
<property name=”b1” ref=”bean1” />
</bean>
<bean id=”bean1” class=”come.Bean1” />
--------------------------------------------------------------------------------------------------------------
根标签:defualt-lazy-init=“true“(所有对象延迟创建)
bean标签:lazy-init=”true”(延迟创建bean对象;容器创建的时候不创建该对象,当调用getBean方法的时候才创建)
--------------------------------------------------------------------------------------------------------------
scope=”singleton”:spring默认创建对象的方式为singleton模式,即用同一个id创建的对象是同一个对象
scope取值:
singleton:单例(只有一个对象)
prototype:每次调用getBean方法容器创建一个新的bean
仅用于web应用,将对象放置到以下指定作用域中
request:
session:
global session:相当于application
--------------------------------------------------------------------------------------------------------------
init-metod=“对象初始化方法名“:指定对象初始化的时候调用的方法
destroy-method=“对象销毁方法名“:指定对象销毁的时候调用的方法;该属性只有scope=”singleton“的时候才生效
对象是在容器关闭或销毁的时候才销毁
构造方法注入:
private A a;
private String b;
public Main(A a, String b) {
this.a = a;
this.b = b;
}
---------------------------------------------------------
- <constructor-arg index="0" ref="a" />
- <constructor-arg index="1" value="abc" />
- </bean>
-
- <bean id="a" class="com.A"></bean>
---------------------------------------------------------
</beans>