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>