一、Spring的概述
1、什么是Spring
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于JEE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
–百度百科
Spring叫做EE开发的一站式框架.
- 一站式框架:有EE开发的每一层解决方案。
- WEB层 :SpringMVC
- Service层 :Spring的Bean管理,Spring声明式事务
- DAO层 :Spring的Jdbc模板,Spring的ORM模块
-
Spring的特征:
-
Spring的版本:
Spring3.x和Spring4.x。
2、Spring的入门(IOC)
(1) 什么是IOC
- IOC: Inversion of Control(控制反转)。
- 控制反转:将对象的创建权反转给(交给)Spring。
(2)、下载开发包
官网:http:/spring.io/
(3)、解压Spring的开发包
- docs :Spring的开发规范和API
- libs :Spring的开发的jar和源码
- schema :Spring的配置文件的约束
(4)、创建web项目,引入jar包
(5)、创建接口和类
- 传统方式
业务层接口:
// 用户管理DAO层接口
public interface UserDao {
public void save();
}
业务层实现类:
// 用户管理DAO层实现类
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("UserDaoImpl执行了...");
}
}
问题:如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展?
(6)、将接口和实现类交给Spring管理
在spring的解压路径下spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Spring的入门配置 -->
<bean id="userDAO" class="cn.itcast.spring.demo1.UserDAOImpl"></bean>
</beans>
(7)、编写测试类
@Test
// Spring的方式调用
public void demo2() {
// 创建Spring的工厂
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
UserDAO userDAO = (UserDAO) applicationContext.getBean("userDAO");
userDAO.save();
}
(8)、IOC和DI(**)
-
IOC:控制反转,将对象的创建权反转给了Spring。
- DI:依赖注入,前提必须有IOC的环境,Spring管理这个类的时候将类的依赖的属性输入(设置)进来。
-
面向对象的时候
- 依赖
Class A{
}
Class B{
public void xxx(A a){}
}- 继承:is a
Class A{
}
Class B extends A{}
- 聚合:has a
- 依赖
二、Spring的工厂类
1、Spring工厂类的结构图
- ApplicationContext继承BeanFactory。
2、BeanFactory:老版本的工厂类
- BeanFactory:调用getBean的时候,才会生成类的实例。
3、ApplicationContext:新版本的工厂类
- ApplicationContext:加载配置文件的时候,就会将Spring管理的类都实例化。
- ApplicationContext有两个实现类
- ClassPathXmlApplicationContext :加载类路径下的配置文件
- FileSystemXmlApplicationContext :加载文件系统下的配置文件
三、Spring的配置
1、XML的提示配置
- Schema的配置
2、Bean的相关配置
(1)、<bean>标签的id和name的配置
- id:使用了约束中的唯一约束。里面不能出现特殊字符的。
- name:没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。
- Spring和Struts1框架整合的时候
- <bean name=”/user” class=””/>
- class:创建对象所在类的全路径(要生成实例的类的全路径)。
(2)、Bean的生命周期的配置(了解)
- init-method:Bean被初始化的时候执行的方法
- destroy-method:Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)
(3)、Bean的作用范围的配置(重点)
- scope:Bean的作用范围
- singleton:默认的,Spring会采用单例模式创建这个对象。
- prototype:多例模式。(Struts2和Spring整合一定会用到)
- request:应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中。
- session:应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中。
- globalsession:应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相对于session。
四、Spring的Bean管理
1、Spring的Bean的实例化方式(了解)
(1)、无参构造方法的方式(默认)
- 编写类
public class Bean1 {
public Bean1() {
super();
System.out.