介绍
Spring概述
Spring 是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 创建。简单来说,Spring 是一个分层的 JavaSE/EE full-stack (一站式) 轻量级开源框架。
关注文章首部微信公众号发送
#47_spring
开发资源包。
IoC
控制反转(Inversion of Control,缩写为 IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称 DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
理解 IoC 和 DI :
- IoC :控制反转,将对象的创建权交给了 Spring。
- DI :依赖注入,前提必须有 IoC 的环境,Spring 管理一个类时将类依赖的属性注入(设置)进来,就是 DI 的过程。
简单使用
准备
1、引入如下 Jar 包:
2、在 src
下添加名为 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"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置文件约束在 spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html 下可以找到-->
</beans>
示例
1、新建测试 Dao 接口:
// com.zze.dao.UserDao;
public interface UserDao {
void save();
}
2、新建测试 Dao 接口的实现类:
// com.zze.dao.UserDaoImpl
import com.zze.dao.UserDao;
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("from UserDaoImpl.save()");
}
}
3、在配置文件中注册 Dao 的实现:
<?xml version="1.0" encoding="utf-8" ?>
<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-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.html 下可以找到-->
<bean id="userDao" class="com.zze.dao.impl.UserDaoImpl"></bean>
</beans>
4、测试使用:
/**
* 原有方式创建 Bean
*/
@Test
public void test1(){
UserDao userDao = new UserDaoImpl();
userDao.save();
}
/**
* 从 Spring 中获取 Bean
*/
@Test
public void test2(){
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.save();
}
补充
Spirng的工厂类
BeanFactory
:老版本的工厂类,调用 getBean
时才会生成类的实例。
ApplicationContext
:新版本的工厂类,加载配置文件时就会将 Spring 管理的类实例化。
ApplicationContext
有如下两个常用的两个实现类:
ClassPathXmlApplicationContext
:加载类路径下的配置文件。FileSystemXmlApplicationContext
:加载文件系统下的配置文件。
Bean标签
Bean 标签用来向 Spring IoC 容器中注册 Bean,属性如下:
id
:使用了唯一约束,不能出现特殊字符。name
:没有使用唯一约束(理论上是可以出现重复的,但是实际开发中是不能出现的),可以出现特殊字符。init-method
:初始化时执行该方法(在构造方法之后)。destroy-method
:销毁时执行该方法(默认情况下 Spring 创建的 Bean 是单例的,在工厂类ApplicationContext
实例 Close 时执行)。scope
:配置 Bean 的作用范围。
scope
有如下几个可选值:
singleton
:默认值,Spring 会采用单例模式创建这个对象。prototype
:多例的。request
:应用在 Web 项目中,Spring 创建这个类对象后,将这个对象存放到request
范围中。session
:应用在 Web 项目中,Spring 创建这个类对象后,将这个对象存放的session
范围中。globalsession
:应用在 Web 项目中,必须在 porlet 环境下使用。
分模块配置
第一种方式是在创建工厂实例时一次性加载所有指定的配置文件,例:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext1.xml","applicationContext2.xml");
第二种方式是通过配置文件中的 import
标签引入其它的配置文件,例:
<import resource="com/zze/dao/applicationContext-dao.xml"/>
评论区