Spring从入门到精通【一】概念及第一个环境搭建
1. 专栏介绍
Spring 框架对与 Java 👨💻,重要性不言而喻,本专栏将系统学习框架核心思想和实现原理,理论和实践相结合,帮助刚学习框架的小伙伴摆脱困境重拾自信。
如果你已经学习过该框架,那么本专栏对于依然适用,可用于查漏补缺,如果发现文章有错误或者对文章有一些个人建议,欢迎评论区留言,欢迎大家文章开始处订阅专栏呀,原创不易,如果觉得文章对你有帮助,记得点赞收藏呀。
Spring专栏完更后,会开始SpringMVC
专栏,准备和博主一起学习的小伙伴记得关注哦。
2. 写在前面
大家好,本文是Spring的第一篇,理论方面,学习框架相关概念,实践方面,完成第一个环境的搭建。
3. 引言
Spring框架是一个集众多设计模式于一身的
开源的
、轻量级项目管理
框架
致力于JAVAEE轻量级解决方案,相对于原来学过的框架而言,Spring不是替换某个框架,而是对其进行整合管理
轻量级方案
提供简单的,统一的,高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。
4. Spring核心作用
Spring 框架用来管理 [创建 | 使用 | 销毁] 项目中的组件,由于Spring框架可以帮我们创建管理项目中的组件对象,因此也习惯称Spring是一个工厂或容器
。
组件: dao,service都是项目中的组件
5. 第一个环境搭建
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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
因为本地仓库没有这些依赖,所以需要刷新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>
- 1
- 2
- 3
- 4
- 5
- 6
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 + '\'' +
'}';
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
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);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
执行结果:
七月 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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
6. 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可以对业务逻辑的各个部分进行隔离,比如事务操作,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
7. 写在最后
我是小周,周棋洛的周,原创不易,如果觉得文章对你有帮助,不妨点赞收藏一下本文呀,如果想持续学习Spring,关注
不迷路,这就是全部内容了,拜拜,下期再见。👋
文章来源: blog.csdn.net,作者:王子周棋洛,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/m0_53321320/article/details/125657479
- 点赞
- 收藏
- 关注作者
评论(0)