Spring框架 -IOC、工厂类

一、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模块
  1. Spring的特征:
    在这里插入图片描述

  2. 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的提示配置

  1. 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.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值