1、Spring介绍
Spring 是一个兴起于2003的轻量级java开源框架,由Rod Johnson创建,其目的是为了解决企业应用开发的复杂性而创建的。框架的主要优势是分层架构,分层架构允许使用者选择使用哪一组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只能由EJB完成的事。Spring的用途不仅局限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从中受益。Spring的核心是控制反转(Ioc)和面向切片(AOP)。简单来说,Spring是一个分层的JavaSE/EE一站式的轻量级开源框架。
2、Spring的优势
(1)方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象的创建和依赖关系维护,交给Spring管理(2)AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截,运营监控等功能(3)声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程(4)方便程序的测试
Spring对Junit4 支持,可以注解方便的测试Spring程序(5)方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(Struts、Hibernata、Mybatis等)的直接支持。
3、Spring搭建(第一个程序)
创建WEB工程-导包-创建对象-书写配置文件-代码测试
(1)导包
spring-beans-4.2.4.RELEASE.jar
spring-context-4.2.4.RELEASE.jar
spring-core-4.2.4.RELEASE.jar
spring-expression-4.2.4.RELEASE.jar
springsource.org.apache.commons.logging-1.1.1.jar
springsource.org.apache.log4j-1.2.15.jar
(2)创建对象
package com.hciot.bean;
public class User {
private String name;
private Integer age;
public User() {
System.out.println("user对象空参构造方法");
}
public User(String name, Car car) {
System.out.println("User(String name, Car car)");
this.name = name;
this.car = car;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age ]";
}
}
(3)书写配置文件
<?xml version="1.0" encoding="UTF-8"?>
<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-4.2.xsd ">
<!-- 将User对象交给spring容器管理 -->
<bean name="user" class="com.hciot.bean.User" init-method="init" destroy-method="destroy"></bean>
</beans>
(4)代码测试
package com.hciot.a_hello;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hciot.bean.User;
public class Demo {
@Test
public void fun1(){
//1.创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.向容器要user对象
User u = (User) ac.getBean("user");
//3.打印user对象
System.out.println(u);
}
}
4、Spring思想
IOC:Inverse of Control反转控制
将我们创建对象的方式反转了,以前对象的创建是由我们自己维护的,包括依赖关系的注入。使用Spring之后,对象的创建以及依赖关系可以由Spring完成,反转控制就是反转了对象的创建方式,从我们自己创建反转给了Spring.
DI:Dependency Injection 依赖注入
实现IOC需要DI支持
BeanFactory接口
spring原始接口.针对原始接口的实现类功能较为单一。BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象
ApplicationContext
丛类路径下加载配置文件:ClassPathXmlApplicationContext。
从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")
结论:web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory.