Spring Boot简单操作
目录
一、自定义异常页面
对于404、405、500等异常状态,服务器会给出默认的异常页面,而这些异常页面一般都是英文的,且非常不友好。我们可以通过简单的方式使用自定义异常页面,并将默认状态码页面进行替换
1、定义目录
在src/main/resources目录下再定义新的目录public/error,必须是这个目录名称
2、定义异常页面



3、修改处理器模拟500错误

4、访问效果


二、单元测试
1、定义接口

2、定义Service两个实现类
注意,实现类上要添加@Service注解,以交给Spring容器来管理


3、测试
三、多环境选择
下面将实现如下功能:存在开发与生产两种环境,不同环境使用不同配置文件,不同环境调用不同接口实现类。使用不同端口号对不同的配置文件加以区分
1、定义配置文件




说明:
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}为对应的环境标识,例如,
- application-dev.properties:开发环境
- application-pro.properties:生产环境
至于哪个配置文件会被加载,则需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。例如,spring.profiles.active=test就会加载application-test.properties配置文件内容。
在生产环境下,application.properties中一般配置通用内容,并设置spring.profiles.active属性的值为dev,即,直接指定要使用的配置文件为开发时的配置文件,而对于其它环境的选择,一般是通过命令行方式去激活。配置文件application-{profile}.properties中则配置各个环境的不同内容
2、定义业务代码

SomeService接口

SomeService实现类
SomeServiceImpl

OtherSomeServiceImpl

说明:
在实现类上添加@Profile注解,并在注解参数中指定前述配置文件中的{profile}值,用于指定该实现类所适用的环境
3、定义处理器

4、Idea下运行与访问
配置dev环境



配置pro环境



5、在命令行下选择环境
例如,现在的主配置文件中指定的是dev环境

打包

将当前工程打为Jar包后,在命令行运行时添加如下参数

此时执行的就是生产环境,调用的就是ProduceServiceImpl类。
说明:
在命令行中添加的参数可以是写在配置文件中的任意属性。其原理是命令行设置的属性值的优选级高于配置文件的
5、单配置文件实现方式
这种实现方式只能使用application.yml文件,使用application.properties文件好像文件本身就会出错
-
spring:
-
profiles:
-
active:
-
- dev
-
-
---
-
spring:
-
profiles: dev
-
-
server:
-
port: 8888
-
servlet:
-
context-path: /xxx
-
-
---
-
-
spring:
-
profiles: pro
-
-
server:
-
port: 9999
-
servlet:
-
context-path: /yyyy
四、读取主配置文件中的属性
1、定义配置文件

2、定义配置属性类
-
package com.sping.boot.demo.bean;
-
-
import org.springframework.boot.context.properties.ConfigurationProperties;
-
import org.springframework.context.annotation.PropertySource;
-
import org.springframework.stereotype.Component;
-
-
@Component
-
@PropertySource(value = "classpath:MyApp.properties",encoding = "utf-8")
-
@ConfigurationProperties("game")
-
public class Game {
-
private String name;
-
private String sex;
-
-
public String getName() {
-
return name;
-
}
-
-
public void setName(String name) {
-
this.name = name;
-
}
-
-
public String getSex() {
-
return sex;
-
}
-
-
public void setSex(String sex) {
-
this.sex = sex;
-
}
-
}
说明:
- @ProertySource用于指定要读取的配置文件
- @ConfigurationProperties用于指定要读取配置文件中的对象属性,即指定要读取的配置文件属性的前辍
- @Component表示当前从配置文件读取来的对象,由Spring容器创建
- 要保证类的属性名要与配置文件中的对象属性名相同
3、修改SomeController类

五、读取List<String>属性
1、导入依赖
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-configuration-processor</artifactId>
-
</dependency>
2、定义配置文件

3、定义配置属性类

4、修改SomeController类

Spring Boot简单操作的更多相关文章
- spring boot 入门操作(二)
spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...
- spring boot 入门操作(三)
spring boot入门操作 devtools热部署 pom dependencies里添加依赖 <dependency> <groupId>org.springframew ...
- 玩转spring boot——简单登录认证
前言 在一个web项目中,某些页面是可以匿名访问的,但有些页面则不能.spring mvc提供了HandlerInterceptor接口来应对,只需要重写preHandle方法便可以实现此功能.那么使 ...
- Spring Boot 简单小Demo 转载!!!
Spring Boot简介 接下来我们所有的Spring代码实例将会基于Spring Boot,因此我们先来了解一下Spring Boot这个大杀器. Spring早期使用XML配置的方式来配置Spr ...
- RabbitMQ(三):RabbitMQ与Spring Boot简单整合
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitM ...
- Spring Boot 实际操作
1.什么是springboot 2.springboot的很多默认编码方式都是utf-8,真是福利啊. 3.spring boot如何启动和访问和MocMvc测试 4.开发环境的调试热启动 5.app ...
- spring Boot 简单的登录功能,利用了jdbcTemplate.class完成sql语句的执行,无需service层、dao层和.xml文件
1.搭建SpringBoot项目首先我们先在IDEA上创建一个SpringBoot的Web项目(1)file ——> new ——> project——> Spring Initia ...
- Spring Boot简单应用——会员管理系统
简介 本项目是使用Spring Boot编写的一个简单的会员管理系统. 提供了会员的解决方案,主要有会员模块,管理员模块,礼品模块,商品模块,会员等级模块,生日提醒模块,积分模块,详细模块如下图 准备 ...
- spring boot简单的小demo(适合于初学者)
import com.example.demo2.com.example.dao.ShopDao; import com.example.demo2.com.example.entity.Shops; ...
随机推荐
- 关于React采坑(憨批)系列---类组件(class MyCom extends React.Component--VM47:9 Uncaught TypeError: Super expression must either be null or a function, not undefined)
今天在学习React中的类组件时,突然给我报错VM47:9 Uncaught TypeError: Super expression must either be null or a function ...
- 如何系统学习C 语言(中)之 结构体篇
1,结构体 在前面我们知道变量和数组都可以用来存储数据,变量用来存储单个数据,数组可以用来存储一组同类型的数据,但你有没有发现--它们都只适合单一属性的数据.那现实生活中,很多对象都是具有多属性的.例 ...
- webRTC中语音降噪模块ANS细节详解(四)
上篇(webRTC中语音降噪模块ANS细节详解(三))讲了噪声的初始估计方法以及怎么算先验SNR和后验SNR. 本篇开始讲基于带噪语音和特征的语音和噪声的概率计算方法和噪声估计更新以及基于维纳滤波的降 ...
- Linux基础三:用户和组
三.用户和组 1.概念 (1).用户概念: 用户是用来运行某一些进程.拥有某一些文件或目录. 在Linux里面,用户分成三大类:root用户.系统用户.普通用户. 用户是用UID来唯一标识身份的,且r ...
- 菜鸡的Java笔记 - java 正则表达式
正则表达式 RegularExpression 了解正则表达式的好处 正则表达式的基础语法 正则表达式的具体操作 content (内容 ...
- 菜鸡的Java笔记 第二十 - java 方法的覆写
1.方法的覆写 当子类定义了与父类中的完全一样的方法时(方法名称,参数类型以及个数,返回值类型)这样的操作就称为方法的覆写 范例:观察方法的覆写 class A{ public void ...
- 如何使用原生的Hystrix
什么是Hystrix 前面已经讲完了 Feign 和 Ribbon,今天我们来研究 Netflix 团队开发的另一个类库--Hystrix. 从抽象层面看,Hystrix 是一个保护器.它可以保护我们 ...
- JVM核心——JVM运行和类加载全过程
1.类加载全过程 (1)类加载机制 JVM把class文件加载到内存,并对数据进行校验.解析和初始化,最终形成JVM可以直接使用的Java类型的过程. 加载 将class文件字节码内容加载到内存中,并 ...
- [luogu1390]公约数的和
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define N 2000005 4 long long n,ans,f[N],vi ...
- spring boot 动态生成接口实现类
目录 一: 定义注解 二: 建立动态代理类 三: 注入spring容器 四: 编写拦截器 五: 新建测试类 在某些业务场景中,我们只需要业务代码中定义相应的接口或者相应的注解,并不需要实现对应的逻辑. ...