Spring

是轻量级的容器和非侵占性的框架。
实现了Ioc容器
实现了AOP概念
提供对持久层与实务的支持
实现了MVC模式
一个全方位的应用程序框架

 

SpringIoC

Spring的IOC容器实现了对象的生命周期管理,降低了组件间的耦合度,将耦合推迟到了配置文件中,实现了软件各层的耦合。

提供了AOP支持,可以针对POJO对象提供声明式服务能力(如:声明式事务),分离了商业逻辑组件(核心关注点)和通用服务组件(横切关注点)。

减少了对Factory和Singleton的数量, 使代码层次更加清晰。

提供了众多的辅助类(如:JdbcTemplate、HibernateTemplate),加快了应用开发。

对于Hibernate Session或Jdbc Connection资源,应用将无需再处理打开和关闭。

对于主流的应用框架(如:Hibernate、JSF、Struts)提供了整合方案

一、JAR包

1 spring-framework-2.5.2\lib\jakarta-commons\commons-logging.jar
2 spring-framework-2.5.2\lib\log4j\log4j-1.2.14.jar
3 spring-framework-2.5.2\dist\spring.jar

 二、结构

三、代码

Clazz.java

 1 package entity;
 2 
 3 
 4 public class Clazz {
 5     private String name;
 6     
 7     //无参,构造方法
 8     public Clazz(){
 9         System.out.println("-----Clazz()构造方法-----");
10     }
11     
12     public Clazz(String name){
13         this.name=name;
14     }
15     public String getName(){
16         return name;
17     }
18     public void setName(String name){
19         this.name=name;
20     }
21 }

Test.java

 1 package test;
 2 
 3 import org.springframework.beans.factory.BeanFactory;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 import entity.Clazz;
 6 
 7 public class Test {
 8     
 9     public static void main(String[] args)
10     {
11         
12         BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
13         System.out.println("_______________");
14         Clazz c1 = (Clazz) factory.getBean("clazz");
15         
16         System.out.println(c1.getName());
17     }
18 }

Test1.java

 1 package test;
 2 
 3 import org.springframework.beans.factory.BeanFactory;
 4 import org.springframework.context.support.ClassPathXmlApplicationContext;
 5 import entity.Clazz;
 6 
 7 public class Test1 {
 8     
 9     public static void main(String[] args)
10     {
11         
12         BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
13         Clazz c1 = (Clazz) factory.getBean("clazz");
14         Clazz c2 = (Clazz) factory.getBean("clazz");
15         
16         System.out.println("c1==c2"+(c1==c2));
17         System.out.println(c1.getName());
18         c2.setName("zy131");
19         System.out.println(c1.getName());//c1c2同一个对象
20     }
21 }

applicationContext.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <beans xmlns="http://www.springframework.org/schema/beans"
 4          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5          xmlns:aop="http://www.springframework.org/schema/aop"
 6          xmlns:tx="http://www.springframework.org/schema/tx"
 7          xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
 8            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
 9            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
10         
11         <!--配置BEAN,定义对象的名字,引用类 。  /延迟初始化,创建时/   创建全新的对象-->
12         <bean id="clazz" class="entity.Clazz" lazy-init="true" scope="prototype">
13             
14             <property name="name" value="ZY131"/>
15              
16              <!-- 构造方法注入
17              <constructor-arg index="0" type="java.lang.String" value="zy131"/>
18              -->
19         </bean>
20         
21             
22 </beans>