Spring 从入门到精通 (一) 入门篇

关键词:Spring | 引言 | 环境搭建

本专栏通过理论和实践相结合,系统学习框架核心思想及简单原理,原创不易,如果觉得文章对你有帮助,点赞收藏支持博主 ✨

在这里插入图片描述

Spring专栏完更后,会开始SpringMVC专栏,准备和博主一起学习的小伙伴记得关注哦。

一、知识清单

以下是本文将要学习的知识清单。

在这里插入图片描述

二、写在前面

大家好,本文是Spring的第一篇,理论方面,学习框架相关概念,实践方面,完成第一个环境的搭建。

三、引言

Spring框架是一个集众多设计模式于一身的开源的轻量级项目管理框架

致力于JAVAEE轻量级解决方案,相对于原来学过的框架而言,Spring不是替换某个框架,而是对其进行整合管理

轻量级方案 提供简单的,统一的,高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。

四、Spring核心作用

Spring 框架用来管理 [创建 | 使用 | 销毁] 项目中的组件,由于Spring框架可以帮我们创建管理项目中的组件对象,因此也习惯称Spring是一个工厂或容器

组件: dao,service都是项目中的组件

五、第一个环境搭建

5.1、新建空项目

新建项目,选择空项目,下一步

在这里插入图片描述

填写项目名Spring,选择自己的项目目录,点击完成

在这里插入图片描述

5.2、新建Maven模块

创建Maven模块前,先检查Maven配置是不是已经OK,点开设置,搜索Maven查看

在这里插入图片描述

打开项目结构,新建模块

在这里插入图片描述

选择Maven模块,换了个主题,继续,哈哈

在这里插入图片描述
填写项目名,项目存放位置,组Id,工件名和版本号一般不修改,点击完成
在这里插入图片描述

5.3、引入依赖

Maven项目就创建好了,然后再Pom.xml中引入Spring应用相关依赖包,依赖坐标如下:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.3.2.RELEASE</version>
    </dependency>
</dependencies>

因为本地仓库没有这些依赖,所以需要刷新Maven仓库,去自己配置的国内镜像站下载相应依赖包,稍等就会下载完成,就不报红了

什么是依赖,说的简单点就是Java代码包,里面有很多的Java类,Spring需要运行,需要这些代码支持,所以把它们成为依赖

5.4、引入配置文件

名称任意,位置项目包下的任意位置,习惯叫做application.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">

</beans>

5.5、创建组件类

在Java目录下新建一个dao包,用于存放与数据库映射的Java实体类User,User内容如下:

package dao;

public class User {
    private int id;
    private String name;

    public User() {
    }

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

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

5.6、Spring工厂管理

现在把dao层下的User类,告诉并交给Spring,打开application.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="User" class="dao.User" scope="prototype"/>

</beans>

5.7、启动工厂测试

和dao同级,创建一个启动类MainApplication ,注释看代码

import dao.User;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApplication {
    public static void main(String[] args) {
        // 定义一个ClassPathXmlApplicationContext类型的变量
        ClassPathXmlApplicationContext context;
        // 通过创建ClassPathXmlApplicationContext对象,参数为配置文件xml名
        // 这个类在org.springframework.context.support包下
        context = new ClassPathXmlApplicationContext("application.xml");
        // context事实上就是Spring容器了,现在你可以通过容器暴露的getBean()方法
        // 参数为配置文件中的id唯一标志,获取实例对象
        User user = (User) context.getBean("User");
        User user1 = (User) context.getBean("User");
        System.out.println(user);
        System.out.println(user1);
        // 因为配置的是prototype多例,所以两次创建了两个是不同对象,返回false
        // scope默认值是singleton,单例,如果不配置scope,这里结果就是true了
        System.out.println(user == user1);
    }
}

执行结果:

七月 07, 2022 5:09:03 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6433a2: startup date [Thu Jul 07 17:09:03 CST 2022]; root of context hierarchy
七月 07, 2022 5:09:03 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [application.xml]
User{id=0, name='null'}
User{id=0, name='null'}
false

进程已结束,退出代码为 0

六、Spring框架核心思想

每个框架都有自己的核心思想,要解决哪些问题,这些很重要无论是对框架本身还是对于学习框架的开发者来说,下面就了解Spring框架有哪些核心思想,为以后的学习打牢基础。

6.1、控制反转 IoC

IoC(Inversion Of Controll) 控制反转

把对象的创建由原来(new)的方式转移到配置文件中,交给spring工厂来创建对象,这就是控制反转,所以说Spring是一个大工厂,也是没问题的。

6.2、依赖注入DI

DI(Dependcy Injection) 依赖注入

Spring不仅要创建对象,还要建立类与类之间的关系,因此在控制反转的基础上又提出了依赖注入的概念。

比如业务层需要数据访问层,就可以说业务依赖数据访问,既然依赖,那就要把数据访问给到业务,这里用了一个词,叫注入,很形象。

6.3、面向切面编程AOP

AOP( Aspect Oriental Programing ) 面向切面的编程

通过预编译和运行期间动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个核心概念,利用AOP可以对业务逻辑的各个部分进行隔离,比如事务操作,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

七、写在最后

座右铭:不要在乎别人如何看你,要在乎你自己如何看未来,看梦想,看世界…!

一起学习的可以私信博主或添加博主微信哦。

专栏:订阅专栏 ✅
关注:关注博主 🆙

  • 50
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 78
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 78
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王子周棋洛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值