banner
NEWS LETTER

01-spring-boot-基础

Scroll down

1 spring-boot介绍

Spring Boot是由spring的Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架

其实就是简单、快速、方便!平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?

1)配置web.xml,加载spring和spring mvc

2)配置数据库连接、配置spring事务

3)配置加载配置文件的读取,开启注解

4)配置日志文件

配置完成之后部署tomcat 调试

现在非常流行微服务,如果我这个项目仅仅只是需要发送一个邮件,如果我的项目仅仅是生产一个积分;我都需要这样折腾一遍!

但是如果使用spring boot呢?

很简单,我仅仅只需要非常少的几个配置就可以迅速方便的搭建起来一套web项目或者是构建一个微服务

Spring Boot 具有以下特点:

1 内嵌 Servlet 容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。

2 提供 starter 简化 Maven 配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。

3 提供了大量的自动配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。

4 自带应用监控

Spring Boot 可以对正在运行的项目提供监控。

5 无代码生成和 xml 配置

Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置

2 spring-boot 项目创建

搭建一个springboot 项目步骤如下:

1 新建maven项目

2 在pom.xml 中添加下面的依赖:

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
48
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<!--thymeleaf 模板 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--spring boot web集成依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboot 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!--data注解所需依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>

<!--springboot的junitt测试依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>


</dependencies>

3 编写html页面:在src/java/resources目录下创建templates目录,在目录下创建login.html,页面代码任意写

4 在包com.hqyj.controller下定义访问login.html的控制器 : 代码如下

1
2
3
4
5
6
7
8
9
@Controller
public class LoginController {

@RequestMapping("/login")
public String login(){
return "login";
}

}

5 .添加启动类 :在包com.hqyj下创建MyApplication类,代码如下:

1
2
3
4
5
6
7
@SpringBootApplication
public class MyApplication {
public static void main(String[] args){
SpringApplication.run(MyApplication.class,args);
}

}

6 启动程序,看到如下图,说明启动成功

Spring Boot helloworld

7 搭建完毕。在浏览器输入地址http://localhost:8080 /login 访问

SpringBootApplication 注解**

@SpringBootApplication是一个复合注解,包括@ComponentScan,和@SpringBootConfiguration,@EnableAutoConfiguration。

1 @ComponentScan

@ComponentScan注解就是用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean

2 @SpringBootConfiguration

​ 这个注解的作用与@Configuration作用相同,都是用来声明当前类是一个配置类.可以通过@Bean注解生成IOC容器管理的bean

3 @EnableAutoConfiguration

EnableAutoConfiguration的作用启动自动的配置,@EnableAutoConfiguration注解的意思就是Springboot根据你添加的jar包来配置你项目的默认配置,比如根据spring-boot-starter-web ,来判断你的项目是否需要添加了webmvc和tomcat,就会自动的帮你配置web项目中所需要的默认配置

3 spring-boot 配置静态资源访问

在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。Spring Boot默认提供静态资源目录位置需置于classpath下,目录名需符合如下规则:

/static

/public

/resources

1 :在src/main/resources目录下创建static目录,把js、css、图片等静态资源放在目录下,如下图

image-20211018214006123

2:在页面引入css,js,images方式如下:

1
<script src="/js/jquery-3.1.1.min.js" type="text/javascript"></script>

4 spring-boot 热部署

​ 在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊。在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作。下面我们就看看对于简单的类修改的热部署怎么实现。

1 导入依赖

1
2
3
4
5
<!--springboot 热部署  -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>

2 创建配置文件application.properties. 在src/main/resources目录下创建文件 application.properties. 添加热部署配置,代码如下:

1
2
3
4
5
6
7
8
9
10
11
#页面热部署  即页面修改后会立即生效
spring.thymeleaf.cache=false

#java文件热部署:配置了true后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启)
spring.devtools.restart.enabled=true
#重启目录
spring.devtools.restart.additional-paths=src/main/java
#编译文件.class生成目录
spring.devtools.restart.exclude=WEB-INF/**
#页面不加载缓存,修改即时生效
spring.freemarker.cache=false

3 如果用idea 开发,还需要更改idea的配置:开启idea的自动编译配置:在 File-Settings-Compiler-Build Project automatically,勾上自动编译,如图

image-20211018214006123

4 ctrl + shift + alt + / ,选择Registry,勾上 Compiler autoMake allow when app running,如图

image-20211018214006123

5 新建一个页面,测试 一下:测试注意几个问题

一:在idea中更改了类文件,配置文件,html文件,不要用ctrl+s 保存。因为idea 这里有小bug,页面会报404错误,需要手动重启了

二:刷新浏览器页面测试,建议多刷几次,刷新一次不一定生效。

5 spring-boot application配置文件

5.1application 文件介绍

Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。

SpringBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。

  • application.properties
  • application.yml

其中,application.yml 是一种使用 YAML 语言编写的文件,它与 application.properties 一样,可以在 Spring Boot 启动时被自动读取,修改 Spring Boot 自动配置的默认值。

.properties 文件我们都熟知了,这里主要介绍下.yml 文件的语法以及使用

YAML 简介

YAML 全称 YAML Ain’t Markup Language,它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件。

想要使用 YAML 作为属性配置文件(以 .yml 结尾)

下面是一个简单的 application.yml 属性配置文件。

1
2
server:
port: 8081

YAML 语法

YAML 的语法如下:

  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • 缩进的空格数不重要,但同级元素必须左侧对齐。
  • 大小写敏感。

例如:页面热部署配置可以这样写

1 在src/main/resources目录下创建文件 application.yml,配置如下

1
2
3
spring:
thymeleaf:
cache: false

2 注意:在项目中:application.yml 和 application.properties都存在的话, application.properties 的优先级高于 application.yml。

5.2自定义配置文件

​ application 配置 允许自定义配置属性,然后用@value注解进行读取,但是在application 文件中读取中文会有乱码问题出现,为了解决这个问题,我们可以用自定义配置文件来完成。

1 在src/main/resources目录下创建文件 application-sms.properties,配置内容如下

1
2
3
4
5

aliyun.key=111111111111
aliyun.screct=2222222222
aliyun.SignName=蓉城阳光
aliyun.TemplateCode=3333333333

2 创建pojo类,读取配置这文件,代码如下:

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
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

/**
* @Description 读取配置文件applicaiton-sms
* @Autor 伍军
* @Date 2021/8/10 14:08
* @Version 1.0
**/
@Component
@PropertySource(value = "classpath:application-sms.properties",encoding = "utf-8")
@Data
public class AliyunSmsConfig {

@Value("${aliyun.key}")
private String key;
@Value("${aliyun.screct}")
private String screct;
@Value("${aliyun.SignName}")
private String name;
@Value("${aliyun.TemplateCode}")
private String code;

}

3 调用 类的属性的get方法 ,就可以读取文件内容

4 如果出现读取中文乱码问题,就参照下面更改

打开Settings>Editor>File Encodings ,

Properties Files (*.properties)下的Default encoding for properties files设置为UTF-8,将Transparent native-to-ascii conversion前的勾选上。如图

image-20210827152451964

6 springboot配置启动浏览器访问

1:编写配置文件application.properties:在src/java/resources目录下创建application.properties,加入文件配置信息,如下:

1
2
3
4
5
6
7
8
##是否自动打开浏览器,
openurl=true
#项目地址
myurl=localhost
#浏览器
googleexcute=C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe
#端口号
server.port=8080

1 在com.hqyj.config包下创建配置类 MyRunner:代码如下:复制即可

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
/**
* 配置类:配置默认打开自定义的浏览器
* 启动服务打开浏览器
*/
@Configuration
public class MyRunner implements CommandLineRunner {

@Value("${myurl}")
private String myurl;

@Value("${googleexcute}")
private String googleExcutePath;

@Value("${openurl}")
private boolean isOpen;

@Value("${server.port}")
private String port;

@Override
public void run(String... args) throws Exception {
if(isOpen){
String cmd = googleExcutePath +" http://"+ myurl+":"+port;
Runtime run = Runtime.getRuntime();
try{
run.exec(cmd);
System.out.println("启动浏览器程序成功");
}catch (Exception e){
e.printStackTrace();
}
}
}
}

2 启动服务器测试是否成功

其他文章
cover
  • 25/09/27
  • 15:00
  • 284
  • 1
目录导航 置顶
  1. 1. 1 spring-boot介绍
  2. 2. 2 spring-boot 项目创建
  3. 3. 3 spring-boot 配置静态资源访问
  4. 4. 4 spring-boot 热部署
  5. 5. 5 spring-boot application配置文件
    1. 5.1. 5.1application 文件介绍
    2. 5.2. 5.2自定义配置文件
  6. 6. 6 springboot配置启动浏览器访问