Spring之魔丸降世

发布于:2022-11-28 ⋅ 阅读:(305) ⋅ 点赞:(0)

前言  

        好吧,这个标题挺扯的,反正大概的意思就是想聊聊spring,这篇文章不会涉及IOC和AOP,讲讲我的spring学习过程呢,先是狂神后是尚硅谷,然后杂七杂八面试题,狂神的视频呢就是能快速上手,尚硅谷的呢细嚼慢咽,娓娓道来,进一步了解。

什么是Spring

        好吧,实话实说这个标题也是一个面试题,先来看看一些答案吧,然后自己总结

 总结:

从答案中我们发现,必须说出spring有哪些模块,还有说一点这个的好处,

我的答案是,spring是一个开发框架,其中呢有七大模块分别是测试层,核心模块,aop,工具,消息,数据访问/集成,web。这七大模块呢又被分为20多个小模块,其中最重要的就是IOC和AOP,

spring方便解耦,简化开发,AOP编程支持,方便程序测试,方便和其他框架整合,方便进行事务操作,降低java开发的复杂性。

可以根据如下图来记忆

 七大模块讲解

        我们按照图片从上到下从左到右的顺序来讲解

数据访问集成:

        这里分为了五个小模块

  •         JDBC (Java Database Connectivity) java数据库连接
  •         ORM (Object Relational Mapping) 对象关系映射
  •         OXM (Object XML Mapping) 对象XML映射
  •         JMS (Java Message Service) java消息服务
  •         Transactions  事务

    ORM和事务比较重要,所以重点关注,你学习过程中听到的次数会比较多,我这里说听到,因为很多视频里面都有,你去学习的时候,就会听到,听到是普遍现象,学到是坚持不懈的现象。

Web模块:

        这个模块有四个小模块,这个模块主要是做网站开发用的多,请记住spring的诞生,不是说就只能拿来在web开发方面使用,他的用途很广。做网站开发只是他使用的某一个方向而已。

  • Web 模块  他提供了编解码,过滤器,序列化,国际化,跨域,转换器,客户端和服务端等等,
  • WebMVC模块 我们使用的springmvc(这玩意是在基于spring开发的框架,迎合三层架构时代)
  • WebSocket 模块 用来支持这个 全双工通信(这个词学过计算机网络的熟悉,这玩意就是java网络编程的知识点,感兴趣可以去了解)

  • WebFlux模块 就是这个响应式Web编程模块 

       红字部分的是重要知识点,在对应着javaweb的知识点,是web开发老生常谈的知识点,任何语言的web开发都离不开,拦截器这个梗。只是各种语言实现的方式不一样而已。

切面模块(AOP)

就AOP 和 Aspects这两个模块

Aop : Aspect Oriented Programming , 面向切面编程 ,是对 OOP 的补充
Aspects : 切面(只是一个过程)

Spring AOP 是一个基于代理的 Aop 框架 ,日常使用比较多的

Spring Aspects 模块里面则定义了五种类型的切面

可能大家对这里不理解,这个正常,就当混个眼熟,这个得具体使用和讲解才能知道

IOC核心模块

来到 Spring 最核心的部分,这里有我们熟悉的 控制反转 (Inversion of Control, IOC ) 和依赖注入( Dependency Injection, DI),他有四个核心模块

  • Beans
  • Core
  • Context
  • Expression

BeanFactory 在 Beans 模块中,IOC 容器的根接口,是IOC思想的实现方式之一

StopWatch 在 Core 模块中,它是 Spring 中的一个计时器,在启动 Spring 项目时经常看到

ApplicationContext 在 Context 模块中 ,核心接口

ParserContext 就在 Expression 模块中,里面定了这个 EL表达式 的默认前缀 #{ , 后缀 }

  1. BeanFactory: IOC容器的基本实现,是Spring内部使用的接口,不提供给开发人员使用

  2. ApplicationContext: BeanFacatory 接口的子接口,提供了更多强大的功能,一般由开发人员使用

Test模块

这个模块就是拿来测试写的代码,主要应用在三层架构中,测试每一层的代码有没有问题。

入门案例

  1. 下载Spring框架

    具体步骤:Spring下载(超详细)_挣脱那枷锁的博客-CSDN博客_spring下载

    直接网址:JFrog

  2. 使用idea创建一个项目

  3. 导入jar包

    可以观察发现都是jar包,文档,源代码

    做简单的案例只需要核心模块

 

部门类

/**
 * 部门类
 */
public class Dep {
    private String name;
    private List<String> cats;
    private Set<String> pats; //宠物
    private Map<String,String> infos; //信息
    private Properties mysqlInfos; //mysql数据库链接信息
    private String[] numbers; //家庭成员

    public void setCats(List<String> cats) {
        this.cats = cats;
    }

    public void setPats(Set<String> pats) {
        this.pats = pats;
    }

    public void setInfos(Map<String, String> infos) {
        this.infos = infos;
    }

    public void setMysqlInfos(Properties mysqlInfos) {
        this.mysqlInfos = mysqlInfos;
    }

    public void setNumbers(String[] numbers) {
        this.numbers = numbers;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Dep{" +
                "name='" + name + '\'' +
                ", cats=" + cats +
                ", pats=" + pats +
                ", infos=" + infos +
                ", mysqlInfos=" + mysqlInfos +
                ", numbers=" + Arrays.toString(numbers) +
                '}';
    }
}

员工类

/**
 * 员工类
 */
public class Emp {

    private String name;
    //属于哪个部门
    private Dep dep;

    public void setName(String name) {
        this.name = name;
    }

    public void setDep(Dep dep) {
        this.dep = dep;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "name='" + name + '\'' +
                ", dep=" + dep +
                '}';
    }
}

bean2.xml配置文件

<?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演示-->
    <bean id="emp" class="pojo.Emp">
        <property name="dep">
            <bean class="pojo.Dep">
                <property name="name" value="保安部"></property>
            </bean>
        </property>

    </bean>
</beans>

测试类

public class SpringTest {

    @Test
    public void test() throws BeansException {
        //得到IOC容器
        ApplicationContext  context = new ClassPathXmlApplicationContext("bean2.xml");
        //通过id拿到bean对象
        Emp emp = (Emp) context.getBean("emp");
        System.out.println(emp);

    }

}

这个案例使用就是它的核心,创建一个对象。不是用new的方式而是用xml配置。更多精彩内容请收看后续文章

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到