小滴课堂 独孤求败-小滴云架构大课十八式(完结fx)

103 阅读4分钟

小滴课堂 独孤求败-小滴云架构大课十八式

//xia讠果☛: 3w lexuecode com

Spring主要模块介绍

  1.Spring核心容器:核心容器是Spring框架的重要组成部分,也可以说是Spring框架的基础。他在整个框架中的作用是负责管理对象的创建,管理,配置等操作。其主要包含spring-core、spring-beans、spring-context、spring-expression组件。

  2.面向切面编程:Spring框架还提供了面向切面编程的能力,利用面向切面编程,可以实现一些面向对象编程无法很好实现的操作。例如,将日志,事务与具体的业务逻辑解耦。其主要包含spring-aop、spring-aspects组件。

  3.Instrumentation:该模块提供了为JVM添加代理的功能,该模块包含spring-instrument、spring-instrument-tomcat组件,使用较少,不必过分关注。

  4.数据访问与集成:Spring框架为了简化数据访问的操作,包装了很多关于数据访问的操作,提供了相应的模板。同时还提供了使用ORM框架的能力,可以与很多流行的ORM框架进行整合,如hibernate,mybatis等等的著名框架。还实现了数据事务的能力,能够支持事务。包含spring-jdbc、spring-tx、spring-orm、spring-oxm、spring-jms、spring-messaging组件。

  5.Web和远程调用:Spring框架支持Web开发,以及与其他应用远程交互调用的方案。包含spring-web、spring-webmvc、spring-websocket、spring-webmvc-portlet组件。

  6.Spring测试:Spring框架提供了测试的模块,可以实现单元测试,集成测试等等的测试流程,整合了JUnit或者TestNG测试框架。包含spring-test组件。

 

使用Spring框架可以带来以下好处

  1、轻量:非入侵性的、所依赖的东西少、资源占用少、部署简单,不同功能选择不同的 jar 组合。

  2、容器:工厂模式实现对 JavaBean 进行管理,通过控制反转(IOC)将应用程序的配置和依赖性与应用代码分开。

  3、松耦合:通过 xml 配置或注解即可完成 bean 的依赖注入。

  4、AOP:通过 xml 配置 或注解即可加入面向切面编程的能力,完成切面功能,如日志,事务等的统一处理。

  5、方便集成:通过配置和简单的对象注入即可集成其他框架,如 Mybatis、Hibernate。

  6、丰富的功能:JDBC层抽象、事务管理、MVC、Java Mail、任务调度、JMX、JMS、JNDI、EJB、动态语言、远程访问、Web Service等。

小滴课堂 独孤求败-小滴云架构大课十八式 - 底层IOC容器

使用IOC最大的好处就是减少了代码的耦合度,降低了程序的维护成本。可能很多人都知道这个道理,就是不太明白它到底是怎么降低的,别慌下面让我来给大家讲解一下。

假设现在有一道菜:宫保鸡丁。

// 伪代码
public class KungPaoChicken {
    
    public static KungPaoChicken getKungPaoChicken(各种食材) {
        // 加工各种食材最终得到一份美味的宫爆鸡丁。
        return KungPaoChicken;
    }
}

传统做法

如果现在不使用IOC,我们想要吃到宫保鸡丁,那么就需要如下操作。

// 伪代码
public class Person() {
    // 采购各种食材
    // 准备好各种食材通过KungPaoChicken获取到一份宫保鸡丁。
    KungPaoChicken kungPaoChicken = KungPaoChicken.getKungPaoChicken(各种食材);
}

代码之间的耦合关系图:

看起来也不难,也不麻烦对吧?

别着急下定论,现在只是一个人想要宫保鸡丁,假如现在有10个人都想要那?是不是有十份相同的代码?这10个人都和KungPaoChicken有耦合。又比如现在需要的食材有所改变,那这样的话是不是这10个人都需要调整代码?这么一来是不是发现这种实现方式一点也不友好。

底层IOC容器加入对象三种方式

  1. 配置文件方式:可以通过在配置文件中配置对象的信息,然后在程序启动时读取配置文件并根据配置信息创建对象,并将其加入到IOC容器中。

  2. 注解方式:可以通过在对象上添加特定的注解(如@Component、@Service、@Repository等),然后在程序启动时通过扫描指定包路径下的所有类并解析注解,将带有注解的类创建对象并加入到IOC容器中。

  3. 编程方式:可以通过在程序中通过编程方式创建对象,并将其加入到IOC容器中。通常通过调用IOC容器的相关API(如registerBean、registerSingleton等)来实现。