目录

一、自定义异常页面

二、单元测试

​三、多环境选择

四、读取主配置文件中的属性

五、读取List属性


一、自定义异常页面

对于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文件好像文件本身就会出错


  1. spring:
  2. profiles:
  3. active:
  4. - dev
  5. ---
  6. spring:
  7. profiles: dev
  8. server:
  9. port: 8888
  10. servlet:
  11. context-path: /xxx
  12. ---
  13. spring:
  14. profiles: pro
  15. server:
  16. port: 9999
  17. servlet:
  18. context-path: /yyyy

四、读取主配置文件中的属性

1、定义配置文件

2、定义配置属性类


  1. package com.sping.boot.demo.bean;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.context.annotation.PropertySource;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. @PropertySource(value = "classpath:MyApp.properties",encoding = "utf-8")
  7. @ConfigurationProperties("game")
  8. public class Game {
  9. private String name;
  10. private String sex;
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public String getSex() {
  18. return sex;
  19. }
  20. public void setSex(String sex) {
  21. this.sex = sex;
  22. }
  23. }

说明:

  • @ProertySource用于指定要读取的配置文件
  • @ConfigurationProperties用于指定要读取配置文件中的对象属性,即指定要读取的配置文件属性的前辍
  • @Component表示当前从配置文件读取来的对象,由Spring容器创建
  • 要保证类的属性名要与配置文件中的对象属性名相同

3、修改SomeController类

五、读取List<String>属性

1、导入依赖


  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-configuration-processor</artifactId>
  4. </dependency>

2、定义配置文件

3、定义配置属性类

4、修改SomeController类

Spring Boot简单操作的更多相关文章

  1. spring boot 入门操作(二)

    spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...

  2. spring boot 入门操作(三)

    spring boot入门操作 devtools热部署 pom dependencies里添加依赖 <dependency> <groupId>org.springframew ...

  3. 玩转spring boot——简单登录认证

    前言 在一个web项目中,某些页面是可以匿名访问的,但有些页面则不能.spring mvc提供了HandlerInterceptor接口来应对,只需要重写preHandle方法便可以实现此功能.那么使 ...

  4. Spring Boot 简单小Demo 转载!!!

    Spring Boot简介 接下来我们所有的Spring代码实例将会基于Spring Boot,因此我们先来了解一下Spring Boot这个大杀器. Spring早期使用XML配置的方式来配置Spr ...

  5. RabbitMQ(三):RabbitMQ与Spring Boot简单整合

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitM ...

  6. Spring Boot 实际操作

    1.什么是springboot 2.springboot的很多默认编码方式都是utf-8,真是福利啊. 3.spring boot如何启动和访问和MocMvc测试 4.开发环境的调试热启动 5.app ...

  7. spring Boot 简单的登录功能,利用了jdbcTemplate.class完成sql语句的执行,无需service层、dao层和.xml文件

    1.搭建SpringBoot项目首先我们先在IDEA上创建一个SpringBoot的Web项目(1)file ——> new ——> project——> Spring Initia ...

  8. Spring Boot简单应用——会员管理系统

    简介 本项目是使用Spring Boot编写的一个简单的会员管理系统. 提供了会员的解决方案,主要有会员模块,管理员模块,礼品模块,商品模块,会员等级模块,生日提醒模块,积分模块,详细模块如下图 准备 ...

  9. spring boot简单的小demo(适合于初学者)

    import com.example.demo2.com.example.dao.ShopDao; import com.example.demo2.com.example.entity.Shops; ...

随机推荐

  1. Git撤销、回滚操作

    git的工作流 工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的. 暂存区:已经 git add xxx 进去, ...

  2. 【IDEA】IDEA项目没有被SVN管理问题

    解决方法 VCS-Enable Version Control Integration

  3. web页面自动化总结。selenium

    web自动化测试终篇:总结我理解的ui自动化,整理归纳: https://blog.csdn.net/CCGGAAG/article/details/89669592 web页面自动化知识点 1.we ...

  4. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  5. Spring Aop面向切面编程&&自动注入

    1.面向切面编程 在程序原有纵向执行流程中,针对某一个或某一些方法添加通知,形成横切面的过程叫做面向切面编程 2.常用概念 原有功能:切点,pointcut 前置通知:在切点之前执行的功能,befor ...

  6. 关于如何在MyEclipse下修改项目名包名,以及类

    1.修改项目名,右键选择properties->web->web-Context-root修改名称或者直接按F2修改.2,修改包名,右键选择Refactor->rename修改名称即 ...

  7. 说下我费了几个钟头才搞定的myeclipse和tomcat问题

    配置myeclipse与tomcat的时候,我根本没有想到myeclipse已经集成了tomcat,根据我上篇文章可以找到所集成的tomcat的位置.于是,自己下了一个tomcat,也许是自作聪明吧, ...

  8. OWASP-Top5-(Security Misconfiguration 安全配置错误)

    概述 从上一版的第 6 位开始,90% 的应用程序都经过了某种形式的错误配置测试.随着更多转向高度可配置的软件,看到这一类别上升也就不足为奇了.值得注意的CWE包括CWE-16 Configurati ...

  9. [atAGC034F]RNG and XOR

    令$N=2^{n}$先将$\forall 0\le i<N,a_{i}$除以$\sum_{i=0}^{N-1}a_{i}$,即变为概率 令$f_{i}$表示$i$的答案(第一次变成$i$的期望步 ...

  10. [bzoj1391]order

    考虑最小割,即最少要去掉多少收益先S向所有机器连边,流量为购买费用:所有机器向工作连边,流量为租借费用:工作向T连边,流量为收益那么对于每一个工作,要么割掉连向T的边,要么购买/租借所有机器,同时由于 ...