文章目录
- 一:Spring和SpringBoot
- (1)Spring已解决和未解决的问题
- (2)SpringBoot
- 二:Spring项目的创建
- (1)IDEA创建
- (2)网页端创建
- 三:项目目录介绍及运行
- (1)项目目录介绍
- (2)Hello World
- (3)约定大于配置
一:Spring和SpringBoot
(1)Spring已解决和未解决的问题
Spring已解决问题:Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能
- 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
- 可以提供众多服务,事务管理,WS等
- AOP的很好支持,方便面向切面编程
- 对主流的框架提供了很好的集成支持,如Hibernate,Struts2,JPA
- Spring DI机制降低了业务对象替换的复杂性
- Spring属于低侵入,代码污染极低
- Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部
Spring未解决问题:虽然Spring的组件代码是轻量级的,但它的配置却是重量级的
- 一开始,Spring用XML配置,而且是很多XML配置
- Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置
- Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML
但是
- 所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间
- 除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进
(2)SpringBoot
SpringBoot:是一个用于构建独立的、生产级别的基于 Spring 框架的应用程序的开源框架。它是 Spring 生态系统的一部分,旨在简化 Spring 应用程序的开发和部署过程。Spring Boot 提供了一种快速、无配置的方式来创建 Spring 应用程序,减少了繁琐的配置和样板代码,使开发者能够更专注于应用程序的业务逻辑。其特点如下
- 简化配置:Spring Boot 自动配置了许多常见的应用程序组件,如数据源、Web 服务器、安全等,减少了手动配置的需要
- 内嵌式容器:Spring Boot 支持内嵌式的容器,如Tomcat、Jetty和Undertow,使应用程序可以作为独立的可执行 JAR 文件或 WAR 文件运行,无需外部的 Web 服务器
- 开箱即用:Spring Boot 提供了许多预定义的 Starter 依赖,可以轻松集成各种技术和框架,如Spring Data、Spring Security、Thymeleaf、JPA、MongoDB、Redis等
- 自动配置:Spring Boot 根据应用程序的依赖和配置自动配置 Spring 框架,减少了手动配置的工作
- 嵌入式数据库支持:Spring Boot 支持内嵌式数据库,如H2、HSQLDB、Derby等,方便开发和测试
- 生产就绪:Spring Boot 提供了监控、度量、健康检查等功能,使应用程序容易部署和管理
- 外部化配置:Spring Boot 支持将配置参数外部化,可以使用属性文件、YAML 文件、环境变量等方式来配置应用程序,便于不同环境的部署
- 微服务支持:Spring Boot 可以与 Spring Cloud 结合使用,构建微服务架构,实现服务发现、负载均衡、断路器等功能
总而言之,SpringBoot最核心的就是以下三点
- 快速添加依赖
- 内置Web容器
- 自动装配
二:Spring项目的创建
(1)IDEA创建
- 注意:社区版无此选项
- 2022.12官方发布SpringBoot3,基于Spring6,要求最低JDK版本17
新建project,选择Spring Initializr
填写信息如下
选择版本,和依赖
创建完毕
运行
(2)网页端创建
- Spring Initializr
点击⽣成按钮会下载⼀个 Spring Boot 的 zip 包,解压后,用IDEA打开
三:项目目录介绍及运行
(1)项目目录介绍
Spring项目结构如下
其中.mvn
、HELP.md
、mvnw
、mvnw.cmd
这个四个文件(文件夹)没有什么作用,可删除
SpringBoot项目的启动类默认名字叫做DemoApplication
,右键运行即可
(2)Hello World
我们学习Java EE目的就是要实现Web项目或接口的,之前的SpringFrameWork只不过是一个普通的Java项目,无法直接和浏览器交互。因此,现在我们需要使用SpringBoot来实现交互
创建一个UserController
文件,然后添加注解
@RestController
=@Controller
+@ResponseBody
package com.example.springfirstdemo_2023_11_09;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller // 当前类为控制器
@ResponseBody // 返回的是数据而非页面
public class TestController {
@RequestMapping("/hi") // 路由注册
public String sayHello(String name) {
return "Hello";
}
}
(3)约定大于配置
约定大于配置:是 Spring Boot 框架的设计理念之一,它强调通过一系列的默认约定来减少配置的工作,从而简化开发过程。这一理念的目标是提高开发者的生产力,使得开发过程更加快速和简便。比如在Spring中是需要配置扫描路径的,而SpringBoot则不需要