1.1、Spring简介
Spring Framework是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于Expert
One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由Rod Johnson和Juergen Hoeller等开发。Spring Framework提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
spring官方模块结构图
1.2、Spring是轻量级、一站式的开源框架
- 轻量级:从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
- 一站式:spring提供javaEE三层结构、每一层都有不同的技术支持。
1.3、Spring的基本核心概念
- AOP:面向切面编程、遵守开闭原则OCP(Open-Close Principle)、是扩展功能而不是修改源代码来实现。
- IOC:控制反(IOC)| 【别名】依赖注入(DI-Dependency
Injection)、Spring通过控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
1.3.1、Spring中的IOC底层原理
不适用 Spring 框架解析图
使用 Spring IOC 原理图
1.3.2、IOC入门案例
package spring.ioc;
/**
* @auther 陈郑游
* @create 2016-12-01-20:31
* @功能描述
* @公司地址
*/
public class User {
void getAdd(){
System.out.println("User getAdd IOC 测试! ! !");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--上面的schema约束没必要那么多-->
<bean id="user" class="spring.ioc.User"></bean>
</beans>
package spring.ioc;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @auther 陈郑游
* @create 2016-12-01-20:36
* @功能描述 IOC入门测试
* @公司地址
*/
public class UserTest {
@Test
public void userTest(){
//1、加载配置文件
ApplicationContext context = new
ClassPathXmlApplicationContext("spring/spring-bean.xml");
//2、得到实例
User user = (User)context.getBean("user");
user.getAdd();
//关闭资源
((ConfigurableApplicationContext)context).close();
}
}
1.4、Spring容器
spring容器最基本的接口就是BeanFactor。BeanFactory负责配置、创建、管理Bean,它有一个子接口:ApplicationContext,因此也称之为Spring上下文。Spring容器负责管理Bean与Bean之间的依赖关系。
BeanFactory接口包含以下几个基本方法:
- Boolean containBean(String name):判断Spring容器是否包含id为name的Bean实例。
- <T> getBean(Class<T> requiredTypr):获取Spring容器中属于requiredType类型的唯一的Bean实例。
- Object getBean(String name):返回Sprin容器中id为name的Bean实例。
- <T> T getBean(String name,Class requiredType):返回容器中id为name,并且类型为requiredType的Bean
- Class <?> getType(String name):返回容器中指定Bean实例的类型。
调用者只需使用getBean()方法即可获得指定Bean的引用,无须关心Bean的实例化过程。即Bean实例的创建过程完全透明。
在使用BeanFactory接口时,我们一般都是使用这个实现类:org.springframework.beans.factory.xml.XmlBeanFactory。然而ApplicationContext作为BeanFactory的子接口,使用它作为Spring容器会更加方便。它的实现有:
- FileSystemXmlApplicationContext
- ClassPathXmlApplicationContext
- AnnotationConfigApplicationContex
创建Spring容器实例时,必须提供Spring容器管理的Bean的详细配置信息。Spring的配置信息通常采用xml配置文件来设置,因此,创建BeanFactory实例时,应该提供XML配置文件作为参数。
XML配置文件通常使用Resource对象传入。Resource接口是Spring提供的资源访问接口,通过使用该接口,Spring能够以简单、透明的方式访问磁盘、类路径以及网络上的资源。
对于Java EE应用而言,可在启动Web应用时自动加载ApplicationContext实例,接受Spring管理的Bean无须知道ApplicationContext的存在。一般使用如下方式实例化BeanFactory。
//1、加载配置文件
ApplicationContext context = new
ClassPathXmlApplicationContext("spring/spring-bean.xml");
1.5、Bean
在Spring中,那些组成应用的主体(backbone)及由Spring IoC容器所管理的对象被称之为bean。简单地讲,bean就是由Spring容器初始化、装配及被管理的对象,除此之外,bean就没有特别之处了(与应用中的其他对象没有什么区别)。而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。
Bean的属性
- id属性:不能包含特殊字符(如&…#等)、根据id配置属性。
- name属性:功能跟id一样、但name属性包含特殊字符(如&…#等)、根据id配置属性。
- class属性:创建对象的路径。
- scope属性:作用域属性。
作用域
描述
singleton
|
在每个Spring IoC容器中一个bean定义对应一个单实例对象(默认)。
|
prototype
|
一个bean定义对应多个对象实例。
|
request
|
在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例,它们依据某个bean定义创建而成。该作用域仅在基于web的SpringApplicationContext 情形下有效。
|
session
|
在一个HTTPSession 中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext 情形下有效。
|
global
session
|
在一个全局的HTTPSession 中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的SpringApplicationContext 情形下有效。
|
1.5.1、Bean属性注入三种方式
分享到:
相关推荐
即Spring框架的概述 1。 介绍Spring框架 1.1。 依赖注入和控制反转 1.2。 模块 1.2.1。 核心容器 1.2.2。 数据访问/集成 1.2.3。 web 1.2.4。 AOP和仪表 1 2 5。 测试 1.3。 使用场景 1.3.1。 依赖关系管理和命名...
核心容器。提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。...Spring AOP 模块直接将面向方面编程的功能集成到Spring框架中。它为基于Spring 应用程序的对象提供了事务管理服务。
我们从一个简单的容器开始,一步步的重构,最后实现一个基本的Spring框架的雏形,为了帮助我们更加深入的理解Spring的IoC的原理和源码。 详细内容见博文: 【SSH进阶之路】一步步重构容器实现Spring框架——从一个...
Spring框架起源于Rod Johnson在2002年出版的《Expert One-on-One J2EE Design and Development》中的代码。这个框架融合了Java企业版(JEE)开发的最佳实践,与一流的第三方框架集成,并提供了简单的扩展点,允许你...
在学习过程中,你还将接触到Spring Boot,这是一个基于Spring框架的快速开发工具,它简化了Spring应用的初始搭建和配置过程,让开发者可以更快地专注于业务逻辑。Spring Security则是Spring生态中的安全组件,提供...
SSH和Spring框架是Java开发中的两个重要工具,它们在企业级应用开发中占据了核心地位。SSH,是由Struts2、Spring和Hibernate三个框架组成的集成解决方案,而Spring则是一个全面的后端开发框架,包含了多种功能模块。...
Spring框架是中国著名的Java企业级应用开发框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。Spring以其轻量级、模块化和强大的依赖注入特性而闻名,它极大地简化了Java...
Spring框架是由Rod Johnson创建的开源框架,旨在解决企业应用...Spring框架的广泛性和深度使得它成为Java生态系统中不可或缺的一部分,对于任何对Java企业级开发感兴趣的开发者来说,掌握Spring框架都是必备技能之一。
Spring框架是Java开发中的...同时,2016版的资料虽然较新,但Spring框架仍在不断更新和发展,如Spring Framework 5.x引入了响应式编程的支持,因此在深入学习的同时,也要关注最新的版本和更新,以便保持技术的前沿性。
Spring框架是Java开发中广泛应用的一个开源技术,以其强大的功能和灵活性深受开发者喜爱。Spring框架的整体结构包括多个核心模块,这些模块提供了丰富的功能,使得开发者能够更高效地构建企业级应用程序。 1. ...
书中会详细解释AOP的概念、切面、通知类型以及如何在Spring中实现AOP。 在数据访问方面,Spring提供了对各种数据库操作的支持,包括JDBC、ORM(对象关系映射)框架如Hibernate和MyBatis的集成。这部分内容会涵盖...
Spring框架是Java开发中最常用的轻量级框架之一,它的出现极大地简化了企业级应用的开发。本教程将详细讲解如何进行第一次Spring框架的搭建,帮助初学者快速入门。 首先,理解Spring的核心特性至关重要。Spring主要...
Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)能力而著名。SSH框架则是Spring、Struts和Hibernate三个...
Spring框架是Java平台上一个开源的轻量级框架,它提供了一种全面的方式来构建复杂的应用程序,尤其在企业级应用开发中占据了主导地位。 ### Spring框架核心特点 Spring框架以其非侵入式的设计哲学著称,通过依赖...
Spring框架是由Rod Johnson开发的,是当下最流行的Java开发框架之一,它支持多种编程模型,包括Web开发、数据访问、安全、事务管理等,广泛应用于企业级应用的开发中。Spring框架的核心原理是基于控制反转(IOC)和...
这些更新进一步提升了Spring框架的性能和适应性,使其能够跟上技术发展的步伐。 在阅读这份英文文档时,你将有机会了解每个模块的详细用法、配置选项和最佳实践。同时,"spring-framework-reference.html"文件很...
在Spring中,切面可以通过定义通知(advisors)和切点(pointcuts)来实现,这样可以保持代码的整洁和模块化。 Spring对Java EE服务的全面支持体现在它可以方便地与Servlet容器集成,如Tomcat或Jetty,提供Web MVC...
Spring框架是Java开发中最常用的轻量级开源框架之一,它为构建企业级应用程序提供了一整套服务。这个压缩包包含了Spring框架所需的所有jar包,确保你在进行Spring项目开发时能够获得完整的支持。以下是对这些jar包...