一、关于SpringBoot介绍
1. 什么是Spring Boot
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建
以及开发过程。
随着动态语言的流行(Ruby、Groovy、Scala、Node.js)。java的开发显的格外的笨重,繁多的
配置,低下的开发效率、复杂的部署流程以及第三方技术集成难度大。
在上述环境中springboot应运而生。它使用“习惯优于配置(项目中存在大量的配置,此外还内置
一个习惯性的配置,让你无需进行手动配置)”的理念让你的项目快速的运行起来。使用
springboot很容易创建一个独立运行(运行jar,内嵌servlet容器)、准生产级别的基于spring框
架的项目,使用springboot你可以不用或者很少的spring配置。
2. 为什么要使用Srping Boot
- 创建独立的 Spring 应用程序
springboot可以以jar包的形式独立运行,运行一个springboot项目只需要通过java -jar xxxx.jar来运行 - 嵌入的 servlet容器(tomcat、jetty或者Undertow),无需部署 WAR 文件
- 提供starter简化 Maven 配置
- springboot 提供了一系列的starter pom来简化Maven的依赖加载,例如,当你使用了spring-boot-starter-web时,会自动加入依赖包
- 自动配置 Spring
- 开箱即用,没有代码生成,也无需 XML 配置。同时也可以修改默认值来满足特定的需求。
- 准生产的应用监控
- springboot提供基于http、ssh、telnet对运行时的项目进行监控, Spring Boot 并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式。
3. springboot的核心注解及作用
- SpringBoot主要有三个核心注解:
- SpringBootConfiguration、EnableAutoConfiguration、ComponentScan,依赖这几个注解可以完成自动装配的功能,将项目中需要的Bean注入到Spring容器里面。
- SpringBoot程序在启动过程中会解析以下三个注解:
2.1.
SpringBootConfiguration:包含了Configuration注解,实现配置文件,相当于spring中的XML配置文件的applicationContext.xml。2.2.
ComponentScan:指定扫描范围, 可自动发现和装配Bean,默认扫描SpringBootApplication注解类所在的包路径下文件,所以最好将该启动类放到根包路径下。2.3.
EnableAutoConfiguration:SpringBoot根据应用所声明的依赖来对Spring框架进行自动配置功能。
4. 常用注解及作用
- @Mapper
@Mapper注解是由Mybatis框架中定义的一个描述数据层接口(dao)的注解,注解往往起到的都是一个描述性作用,用于告诉spring框架此接口的实现类由Mybatis负责创建,并将其实现类对象存储到spring容器中。 - @Autowired
默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用 - @Resource
由J2EE提供,默认按照byName自动注入,@Resource有两个重要的属性:name和type
Spring将@Resource注解的name属性解析为bean的名字,type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@Resource装配顺序:
如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
如果指定了name,则从Spring上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
如果指定了type,则从Spring上下文中找到类型匹配的唯一bean进行装配,找不到或找到多个,都抛出异常
如果既没指定name,也没指定type,则自动按照byName方式进行装配。如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。 - @Service
@Service注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到Spring容器中,不需要再在applicationContext.xml文件定义bean了。 - @RestController
相当于 @Controller + @ResponseBody 两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面。
......
二、关于Spring Boot项目
1. 创建项目
- IDEA中新建project:File->New->project...
- build.gradle引入spring-boot-starter-web包
plugins {
id 'idea'
id 'java'
id 'org.springframework.boot' version '2.7.5'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
group 'cn.qzzg'
version '1.0-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
- 刷新下gradle
- 在java下创建主启动类:DemoApplication
代码如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
- 创建一个demo接口
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/main")
public class HelloWorldController {
@GetMapping("/hello")
public String test() {
return "Hello World";
}
}
- 修改端口
未设置端口时,默认为8080,若修改端口,则在resources包下创建application.yml文件,并且设置端口号。
server:
port: 8088
当application.properties和application.yml两种配置文件同时存在时,application.properties的优先级高于application.yml。
2. 启动项目
对主启动类进行右键操作:Run/Debug 'DemoApplication'即可
- 启动成功
3. 生成jar包
在gradle内,点击Tasks->build->build/jar
4. 部署
4.1. window部署
4.1.1. 脚本运行
新建文本,修改名称为.bat后缀,如start.bat,编辑内容如下:
start java -Dfile.encoding=UTF-8 -jar springbootDemo-1.0-SNAPSHOT.jar --
spring.config.location=application.yml
-Dfile.encoding:编码
-jar:jar文件名
--spring.config.location:配置的文件路径,方便于在不编译jar包的情况下修改配置
4.1.2. 服务自动启动
- 下载WinSW工具,详见 开发工具 附件
- 把我们下载好的两个文件放到和我们的项目jar同一个目录下面,然后把WinSW.NET4.exe改个名字。
- 我这里是改成了springbootDemo.exe,同时把sample-minimal.xml也改成和exe文件一样的名字,也就是springbootDemo.xml。接下来需要对xml文件进行一下编辑,如下。
<service>
<!-- 安装成windows服务后的服务名-->
<id>springbootDemo</id>
<!-- 显示的服务名称 -->
<name>springbootDemo</name>
<!-- 服务描述 -->
<description>这是winsw生成的服务,专门用于启动springboot项目</description>
<!-- jdk可执行程序的路径,我们已经安装了jdk,只要“java” 即可-->
<executable>java</executable>
<!--参数-->
<arguments> -jar springbootDemo-1.0-SNAPSHOT.jar</arguments>
</service>
- 注册服务:在springbootDemo.exe 所在目录打开dos命令窗口,为了防止出现问题,最好用管理员身份打开。
输入命令springbootDemo.exe install
之后进入到电脑的服务找到我们的服务:springbootDemo,右键启动即可。
4.1.3. 删除服务
sc delete 服务名
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。