您现在的位置是:亿华云 > 人工智能
项目中为什么一定要用Spring?什么是Spring四种策略?
亿华云2025-10-03 02:04:18【人工智能】2人已围观
简介相信每个Java开发人员在工作、学习中都了解Spring怎么使用,但对于一个初级的开发工程师来说,仅仅了解怎么使用,能够很快的通过Spring来完成任务,这应该是足够了,但是呢,如果你还想向更高的级别
相信每个Java开发人员在工作、项目学习中都了解Spring怎么使用,中为种策但对于一个初级的什定开发工程师来说,仅仅了解怎么使用,项目能够很快的中为种策通过Spring来完成任务,这应该是什定足够了,但是项目呢,如果你还想向更高的中为种策级别去前进,系统的什定学习,掌握它的项目底层原理是必不可少的。
每个人在面试的中为种策时候,Spring应该都是什定逃不过的关卡,能够熟练的项目使用,这并不难,中为种策知道它的什定底层原理才是高出别人一步的地方。这篇文章就说简单说下Spring的一些知识,希望能在面试的亿华云计算路上帮助到你们。
Spring是个开源框架,它被创建出来的初衷就是解决企业级应用开发的复杂性。Spring不仅仅局限于服务端开发,任何的java应用都能借助于Spring变得更加简单,可测试性更强,松耦合性更好。
为了降低Java开发的复杂性,Spring采取了一下4种关键策略:
基于POJO的轻量级和最小侵入性编程; 通过依赖注入和面向接口实现松耦合; 基于切面和惯例进行声明式编程; 通过切面和模板减少样板式代码。几乎Spring所做的任何事情,都是围绕着以上四种策略来实现的,其核心就是:简化java开发。
1、轻量级POJO
在日常的开发过程中,可能大部分人都感受到了,很多框架都会强迫应用继承他们的类或者是实现他们的接口,这样就会导致程序和框架绑死,说到这,网站模板我们的现在所用的框架就是这样,各个模块,包括DAO,Service,都会强制性的继承框架的中的类,应用程序和框架绑定的死死的。Spring竭力的避免因为自身的API来搞乱你的应用代码,Spring也不会强迫你实现他的接口或者是继承它的类,最严重的也就是一个雷会使用Spring注解。Spring的非侵入式编程意味着这个类在Spring应用和非Spring应用中发挥着同样的作用。
2、依赖注入
任何一个有实际意义的应用,肯定是会有多个类组成,香港云服务器在没有Spring的时候,每个对象负责管理着与自己相互协作的对象的引用,这样会导致高耦合和难以测试的代码。
public class Train implements Transport{ private Water water; public Train() { water = new Water(); } public void catchGoods(){ water.waterSomthing(); } }可以看到上面的代码,Train在自己的构造函数中自己创建了 Water对象,这样就造成了这两个对象的紧耦合,这个火车可以运水来浇灌农田,但是如果让这个火车来运煤供暖,可能就不太符合了。
而在单元测试的时候,我们要确保catchGoods方法执行的时候,waterSomthing也能够执行,如果这样来做,那就执行不了单元测试了。
耦合是具有两面性的,一方面紧密的耦合的代码,难以测试,难以服用,难以理解,修改了一处就可能会引起别的bug(记得刚去公司的时候,讲开发规范,一个接口尽量的只做一件事情,千万不要一个接口同时为多个地方提供服务),另一方面呢完全没有耦合的代码也什么都干不了。
有了Spring之后,对象的依赖关系由负责协调各对象的第三方组件来完成,对象无需自行创建,依赖注入会将所依赖的关系自动交给目标对象,而不是让对象自己去获取。
public class Train implements Transport{ private Water water; public Train(Water water) { this.water = water; } public void catchGoods(){ water.waterSomthing(); } }上面在我们的改动之后,不再由Train自行创建,而是当成一个构造器参数传进来,这也是依赖注入的一种方式:构造器注入。这也就实现了松耦合。
创建应用组件之间协作的行为通常称为装配,Spring有着多种装配bean的方式,XML就是一种常用的方式。
<?xml version="1.0" encoding="UTF-8"?> <!--DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" --> <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="train" class="com.kr.caption.spring.Train"> <constructor-arg ref="water"/> </bean> <bean id="water" class="com.kr.caption.spring.Water"/> </beans>很赞哦!(4447)