Spring基本介绍
Spring简介
Spring是一个轻量级控制反转(ioC)和面向切面(AOP)的容器框架,它主要是为了解决企业应用开发的复杂性而诞生的:
- 目的:解决企业应用开发的复杂性
- 功能:使用基本的JavaBean代替EJB
- 范围:任何Java应用
Spring的应用不仅仅局限于服务器的开发,从简单性、可测试性和松耦合性的角度,任何的Java应用都可以用Spring框架处理。
Spring的核心是控制反转和面向切面
简单的来说,Spring是一个分层的、一站式的、轻量级的开源框架。
优点
本身优点
- 低侵入式设计,代码污染低
- Write Once,Run Anywhere
- DI有效的降低了耦合度
- AOP提供了通用任务的集中管理
- ORM和DAO简化了对数据库访问
- 高度开放性,并不强制
给开发带来的好处
- 可以有效组织中间层对象
- 使用统一的配置文件
- 促进良好的编程习惯,减少编程代价
- 易于单元测试
- 使EJB成为一种备选
- 为数据存取提供了一致的框架
Spring 特点
- 方便解耦,简化开发
- AOP编程的支持
- 声明式事务的支持
- 方便程序的测试
- 方便集成各种优秀框架
- 减低Java EE API的使用难度
- Spring的源码是经典学习范例
Spring 的核心模块
- 核心容器(Spring Core)
- 应用上下文(Spring Context)
- AOP模块(Spring AOP)
- JDBC和DAO模块(Spring DAO)
- 对象实体映射(Spring ORM)
- Web模块(Spring Web)
- MVC模块(Spring Web MVC)
开始我们的第一个例子
情景假设
一个人在不同的国家要用不同的语言打招呼。
在中国->你好;
在外国->Hello;
整体设计
设计实现
1. IHelloMessage
一个接口,用于定义输出问候信息
package edu.jnvc.spring.first;
public interface IHelloMessage {
public String sayHello() ;
}
2. HelloWorld
接口的实现类,向用户输出“Hello"信息
package edu.jnvc.spring.first;
public class HelloWorld implements IHelloMessage {
@Override
public String sayHello() {
return "Hello";
}
}
3. HelloChina
接口的实现类,向用户输出“你好"信息
package edu.jnvc.spring.first;
public class HelloChina implements IHelloMessage {
@Override
public String sayHello() {
return "你好";
}
}
4. Person
一个人物类,调用IHelloMessage接口,向用户输出问候信息
package edu.jnvc.spring.first;
public class Person {
private IHelloMessage helloMessage;
public IHelloMessage getHelloMessage() {
return helloMessage;
}
public void setHelloMessage(IHelloMessage helloMessage) {
this.helloMessage = helloMessage;
}
public String sayHello() {
return this.helloMessage.sayHello();
}
}
5. Main
程序的入口类,用于加载配置文件以及启动IOC容器,调用人物类,向用户输出问候信息
package edu.jnvc.spring.first;
import org.springframework.beans.factory.*;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;;
public class Main {
public static void main(String[] args) {
Resource r = new FileSystemResource("helloMessage.xml");
BeanFactory f = new XmlBeanFactory(r);
Person person = (Person)f.getBean("person");
String s = person.sayHello();
System.out.println("The person is currently saying "+s);
}
}
6. helloMessage.xml
整体的配置文件,用于设置人物类的特定属性
这里,我们首先将人物设定为在中国。(ref=“helloChina”)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloWorld" class="edu.jnvc.spring.first.HelloWrold"></bean>
<bean id="helloChina" class="edu.jnvc.spring.first.HelloChina"></bean>
<bean id="person" class="edu.jnvc.spring.first.Person">
<property name="helloMessage" ref="helloChina"></property>
</bean>
</beans>
测试
人物所在地为中国
首先设置人物所在地为中国,开始测试程序。
可以看见,输出为你好
人物所在地为外国
将xml文件修改为ref=“helloWorld”
至此,第一个例子我们就完成了。