0
点赞
收藏
分享

微信扫一扫

从业的十多年,Spring的使用发生了“翻天覆地”的变化


文章目录

  • spring 灵魂
  • Ioc
  • DI
  • spring蜕变
  • 基于xml配置
  • 注解配置
  • JavaConfig能力
  • spring boot 王炸
  • spring变化路线

2009年,刚入行培训时,最火的三款框架struts1、hibernate、spring,我还记得那时前辈说过的一句话,“spring最大的用处是你不知道什么时候在用他”。那时候ssh的框架配置文件很多,除了web.xml,不仅关于spring的还有struts1的,各种配置文件,琳琅满目。那时候能自己独立集成这三个框架说明已是熟练工了,哪像现在即使小白也能用spring boot快速进行开发。

spring 灵魂

Ioc,Inversion of Control,控制反转。
DI,Dependency Injection,依赖注入。

Ioc

控制反转,简单来说就是创建对象不用手动去new一个对象了,使用时直接在容器里拿出来用即可。实际上来说是把对象的生命周期托管到Spring容器了,使用方式被反转了。

从业的十多年,Spring的使用发生了“翻天覆地”的变化_xml文件

DI

依赖注入,简单说就是将依赖关系动态的注入到容器中。因为早期spring版本中,主要通过xml的方式来定义Bean,Spring解析相关xml文件,并把定义的bean装载到IoC容器中。

注入方式包含,接口注入、构造器注入和setter方式注入。我使用最多的setter方法实现依赖注入。

从业的十多年,Spring的使用发生了“翻天覆地”的变化_配置文件_02

spring蜕变

其实spring的使用变化是开发者使用的越来越方便的一个过程,其本质还是Ioc和DI。

基于xml配置

我早期接触spring框架,主要表现在使用xml文件进行对象生命周期的描述和管理,项目中存在大量的xml文件,为了便于管理,每个模块配置一个xml文件,每个xml文件中都是如下代码。

<bean id="" class="">
  <property name="" ref="">
</bean>

随着项目规模越来越大,XML文件也随之增多,所以难以管理的问题也越来越突显。并且依赖关系也越来越复杂,配置文件变得“脏乱差”。所以是时候需要改变了。

注解配置

从Spring 2.X开始提供使用注解的方式来声明Bean和注入依赖关系,这样大大减少了XML的配置量。
常用注解:@Service @Repository @Controller @Component等
在application.xml文件中使用component-scan配置扫描路径。

<context:component-san base-package="com.example" />

这样在com.example包路径下的,使用@Service @Repository @Controller @Component等注解的类,都会被装载到IoC容器。

JavaConfig能力

Spring升级到3.X版本后,提供了JavaConfig能力,它就可以完全取代XML了,通过Java代码的方式完成Bean的注入。
这个时候@Configuration注解横空而出,用它标注的类就等同于一个xml文件。@Bean注解将一个对象注入IoC容器中,默认使用方法名作为该Bean的id。

@Configuration
public class XxxConfig{
    @Bean
    public User user(){
        User user = new User();
        user.SetAddress(address());
        return user;
    }

    @Bean
    public Address address(){
        return new Address();
    }
}

但是随着时代的进步,程序员开发越来越方便了,但是依然存在下面的问题:

  • 依赖过多,导致版本兼容的问题很常见。
  • 配置太多,比如MyBatis整合的化,需要配置注解驱动、数据源、事务管理器、映射器扫描等基础配置,每个项目都需要配置一遍,很多工作重复。
  • 运行部署麻烦,先打包,在部署到容器上。
    所以是时候需要改变了。

spring boot 王炸

spring boot主要就是简化spring应用的开发,开发者不用关注配置、版本兼容等问题,只需要通过少量代码就可以创建一个产品级的Spring应用。“约定优于配置”(Convention over Configuration)贯穿spring boot始终。
spring boot不仅简化了单体应用的开发,甚至是Spring Cloud的核心,所以未来我们继续拥抱spring boot吧。

spring变化路线

从业的十多年,Spring的使用发生了“翻天覆地”的变化_xml文件_03


举报

相关推荐

0 条评论