Java 框架领域佼佼者 Spring 初识篇
2021-01-13 22:33
846 查看
Spring 简介
Spring是一个轻量级的 Java 开发框架,它是为了解决企业应用开发的复杂性而创建的,常年雄踞于企业开发必选框架之首。
Spring的核心是控制反转(
IoC)和面向切面编程(
AOP)。简单来说,
Spring是一个分层的
Java EE一站式轻量级开源框架。
Spring的主要作用就是为代码 解耦,降低代码间的耦合度。
在一个系统中,根据功能的不同,代码分为 主业务逻辑 与 系统级业务逻辑 两类。它们各自具有鲜明的特点:主业务代码间逻辑联系紧密,有具体的专业业务应用场景,复用性相对较低;系统级业务相对功能独立,没有具体的专业业务应用场景,主要是为主业务提供系统级服务,如日志、安全、事务等,复用性强。
Spring根据代码的功能特点,将降低耦合度的方式分为了以下两类。
IoC
:使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了,而是由Spring
容器统一管理,实现自动 注入。AOP
:使得系统级服务得到了最大复用,且不用再手工将系统级服务混杂到主业务逻辑中了,而是由Spring
容器统一完成 织入。
Spring 体系结构
Spring由 20 多个模块组成,它们可以分为数据访问/集成(Data Access/Integration)、Web、面向切面编程(AOP, Aspects)、应用服务器设备管理(Instrumentation)、消息发送(Messaging)、核心容器(Core Container)和测试(Test)。
Spring 的特点
非侵入式
所谓非侵入式是指,
Spring框架的 API 不会在业务逻辑上出现,即业务逻辑是 POJO。由于业务逻辑中没有 Spring 的 API,所以业务逻辑可以从
Spring框架快速的移植到其他框架, 即与环境无关。
容器
Spring作为一个容器,可以管理对象的生命周期、对象与对象之间的依赖关系。可以通过配置文件,来定义对象,以及设置与其他对象的依赖关系。
控制反转(IoC)
控制反转(Inversion of Control),即创建被调用者的实例不是由调用者完成,而是由
Spring容器完成,并注入调用者。一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。即,不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面编程(AOP)
面向切面编程(Aspect Orient Programming),是一种编程思想,是面向对象编程
OOP的补充。允许通过分离应用的业务逻辑与系统级服务(例如日志和事务管理)进行开发。开发者只要专注实现业务逻辑,并不需要负责其它的系统级关注点,例如日志或事务支持。
Spring 核心 IoC
控制反转的核心功能在于通过将程序代码获取对象调用权,来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。
当前比较流行的实现方式有两种: 依赖注入和依赖查找,依赖注入方式应用更为广泛。
- 依赖查找(DL):Dependency Lookup,容器提供回调接口和上下文环境给组件,程序代码则需要提供具体的查找方式。
- 依赖注入(DI):Dependency Injection,指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。
依赖注入是目前最优秀的解耦方式。依赖注入让 Spring 的 Bean 之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。
第一个 Spring 程序
引入依赖
在
pom.xml中引入
Spring核心依赖
org.springframework:spring-context
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.15.RELEASE</version> </dependency>
业务代码
创建
HiSpringService业务接口
public interface HelloSpringService { public void helloSpring(); }
创建实现类
public class HelloSpringService implements HelloSpringServiceImpl { public void helloSpring() { System.out.println("Hello Spring"); } }
相关配置
在
src/main/resources目录下创建
spring-context.xml配置文件,从现在开始类的实例化工作交给 Spring 容器管理(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" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="helloSpringService" class="com.antoniopeng.hello.spring.service.impl.HelloSpringServiceImpl" /> </beans>
bean
:用于定义一个实例对象。一个实例对应一个bean
元素。id
:该属性是Bean
实例的唯一标识,程序通过 id 属性访问Bean,Bean 与 Bean 间的依赖关系也是通过 id 属性关联的。class
:指定该Bean
所属的类,注意这里只能是类,不能是接口。
使用 Spring IoC
创建一个
IoCTest测试类,测试对象是否能够通过
Spring来创建,代码如下:
public class IoCTest { public static void main(String[] args) { // 获取 Spring 容器 ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-context.xml"); // 从 Spring 容器中获取对象 HelloSpringService helloSpringService = (HelloSpringService) applicationContext.getBean("HelloSpringService"); HelloSpringService.helloSpring(); } }
相关文章推荐
- 初识轻量级Java开源框架 --- Spring
- Java框架学习笔记——初识Spring之简述
- JAVA框架三剑客 - Struts+Spring+Hibernate快速入门
- Java语言介绍(04)开源项目(02)Web框架(01)Spring
- Java高级工程师面试题目汇集(关于Struts,Spring,Hibernate三大框架的面试)
- Google发布Guice: Java IOC 框架. 挑战Spring!
- 2013-07-26 java web spring 框架获取资源文件
- Java三大框架:Struts Hibernate Spring
- Java 权限框架 Shiro 实战二:与spring集成、filter机制
- 在使用hibernate 和spring 构架的框架中如果出现Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm
- 初识Java 开源框架 Play
- Java高级工程师面试题目汇集(关于Struts,Spring,Hibernate三大框架的面试)
- [Java,MVC] SpringMVC+Spring+hibernate 框架
- Java SSH/SSI框架科普(Struts+Spring+Hibernate/Ibatis)
- java 框架基础知识(4)----XML基础知识-->Spring配置
- java(样品集成框架spring、spring mvc、spring data jpa、hibernate)
- java开源框架集成常见错误之spring2.5中没有org.springframework.web.struts.DelegatingActionProxy ,使得Action不能注入到spring中
- JavATE 0.6 支持Spring,领域驱动设计(DDD)框架
- Portal-Basic Java Web 应用开发框架:应用篇(十一) —— 整合 Spring
- java SSH2 框架搭建 (myeclipse 6.5 + jdk 1.6+ struts-2.3.1.2+hibernate 3.5+spring 3.1)