原文出自:http://www.cnblogs.com/liunanjava/p/4396794.html
一、Spring简述
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使 用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然 而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核 心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。
二、Spring体系结构
2.1、体系结构介绍
- Spring Core:管理bean与bean之间的依赖
- Spring Web:提供Web应用开发的支持
- Spring DAO:支持包括一致的异常处理和编程方式
- Spring BeanFactory:功能加强的一个子接口
- Spring MVC:针对Web应用MVC思想实现
- Spring ORM:用于与流行ORM框架整合
- Spring AOP:AOP面象切面编程,提供与OP联盟兼容的编号实现
以上大部分都可以 单独使用
2.2、各部分
三、Spring设计理念
四、如何获取Spring
下载地址
http://repo.spring.io/libs-release-local/org/springframework/spring/
五、使用Spring实现Hello Spring
添加包
建立类
package com.pb.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloSpring {
private String str;
public void print() {
System.out.println("Hello! " + this.getStr());
}
public static void main(String[] args) {
// 创建ApplicationContext上下文件对象
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
HelloSpring hello=(HelloSpring) context.getBean("hellospring");
hello.print();
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
建立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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="hellospring" class="com.pb.demo.HelloSpring">
<property name="str" value="Spring"></property>
</bean>
</beans>
另一个
package com.pb.demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringDemo1 {
private String name;
private String job;
public void print() {
System.out.println("姓名: " + this.getName() + " 职业: " + this.getJob());
}
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
SpringDemo1 demo=(SpringDemo1)context.getBean("springdemo");
demo.print();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="hellospring" class="com.pb.demo.HelloSpring">
<property name="str" value="Spring"></property>
</bean>
<bean id="springdemo" class="com.pb.demo.SpringDemo1">
<property name="name" value="林冲"/>
<property name="job" value="80万禁军教头!"/>
</bean>
</beans>
六、Spring对单态和工厂模式的支持
6.1、工厂模式
package com.pb.lnk;
/**
* 墨盒接口
* @author Administrator
*
*/
public interface Lnk {
public void getColor();
}
实现类
package com.pb.lnk;
/**
* 彩色墨盒
* @author Administrator
*
*/
public class Color implements Lnk {
@Override
public void getColor() {
System.out.println("=======使用彩色墨盒打印!========");
}
}
package com.pb.lnk;
/**
* 灰色墨盒
* @author Administrator
*
*/
public class Grey implements Lnk {
@Override
public void getColor() {
System.out.println("--------使用灰色墨盒打印!---------");
}
}
测试类
package com.pb.lnk;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 墨盒测试类
*
* @author Administrator
*
*/
public class LnkTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
Lnk k=null;
k=(Lnk) context.getBean("color");
k.getColor();
k=(Lnk) context.getBean("grey");
k.getColor();
}
}
applicationContext.xml
<bean id="color" class="com.pb.lnk.Color"></bean>
<bean id="grey" class="com.pb.lnk.Grey"></bean>
6.2、单态模式支持
package com.pb.lnk;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 单态模式(单实例模式)
* @author Administrator
*
*/
public class LnkTest2 {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Lnk lnk1=null;
Lnk lnk2=null;
lnk1=(Lnk)context.getBean("color");
lnk2=(Lnk)context.getBean("color");
System.out.println(lnk1==lnk2);
//结果是true表示2个是同一个对象
}
}