Spring Boot学习

Spring Boot 配置

同一目录下配置文件优先级:.properties > .yml > .yaml


错误:org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1

Caused by: java.nio.charset.MalformedInputException: Input length = 1

at java.nio.charset.CoderResult.throwException(CoderResult.java:281)

at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:339)

at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)

at java.io.InputStreamReader.read(InputStreamReader.java:184)

at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:125)

at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183)

... 43 common frames omitted

分析:

首先,文件没有问题。因为在idea里面运行项目是可以正常运行的。在打包后通过java命令运行才出现问题。

其次,input length = 1,一般出现为文件解析问题,尤其是内容无法解析或解析有误。而charset.MalformedInputException的出现,则可初步定性为编码问题。

原文链接:https://blog.csdn.net/lalalove_yaya/article/details/118190201

解决办法:

将项目编码都设置为UTF-8,并重新编写带有中文的配置文件(或者将文件编码改为UTF-8)


异常: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

我是忘记了在controller类里加@Autowired

其他情况的对应解决办法 请看原文链接: http://t.csdn.cn/Sjyfb


Spring Boot读取配置文件内容的三种方式

分别为:Environment类、@Value注解以及@ConfigurationProperties注解。

Environment 是 SpringCore 中的一个用于读取配置文件的类,将此类使用 @Autowired 注入到类中就可以使用它的getProperty方法来获取某个配置项的值。
使用 @Value 读取配置文件
这种方法适用于对象的参数比较少的情况
我们可以直接在对象的属性上使用 @Value 注解,同时以 ${} 的形式传入配置文件中对应的属性。同时需要在该类的上方使用 @Configuration 注解,将该类作为配置
文件加入,在启动项目的时候实现注入。
结论:其实 @Value底层就是Environment.java
使用 @ConfigurationProperties 读取配置文件
如果对象的参数比较多情况下,推荐使用 @ConfigurationProperties 会更简单一些,不需要在每一个字段的上面的使用@Value注解。
@ConfigurationProperties注解声明当前类为配置读取类
prefix="rabbitmq" 表示读取前缀为rabbitmq的属性

这里有一点需要注意: 必须保证属性名称和字段一模一样,且类需要提供字段的setter方法
注意 如果仅仅只是使用了 @ConfigurationProperties 注解是没有效果的,它并不会将这个配置注入容器中,它还需要和注入容器的注解一起使用。
这里有两种方法实现将它注入到容器中
1、类上添加@Configuration注解
除了@Configuration,也可以是@Controller、@RestController、@Service、@Componet等注解,加入到Ioc容器里。
示例:
@Setter
@Configuration
@ConfigurationProperties(prefix = "rabbitmq")
public class RabbitmqProperties {
private String host;
private String port;
private String username;
private String password;
}
同样哪里需要用到,通过 @Autowired 注入进去就可以获取属性值了

常用的几种数据结构配置读取看下面文章

原文链接:https://blog.csdn.net/Huangjiazhen711/article/details/127084934


问题:idea中出部分文件提示“spring boot Configuration Annotation Processor not configured"。

原因:

提示说明没有配置springboot的自动配置注解处理器,即spring-boot-configuration-processor。

在使用到ConfigurationProperties注解时无法识别。

解决:在pom中增加spring-boot-configuration-processor组件,状态变为正常。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

原文链接:http://t.csdn.cn/gOSV4


profile动态配置切换

  1. 多个profile文件方式

2、yml多文档方式:(旧的已弃用)

新的用法:

3、虚拟机参数方式:-Dspring.profiles.active=pro (可以覆盖文件方式)

4、命令行参数方式:--spring.profiles.active=test

5、外部参数激活(可以不改变原有代码)

执行maven的package命令打包成jar包,

在D:\IdeaProjects\SpringBoot\springboot-profiles\target\目录下,按住shift并右键,打开PowerShell窗口

在运行时,指定一些参数

如改变tomcat端口

按住ctrl + c 进入下一行命令,

输入java -jar .\springboot-profiles-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev

外部配置加载顺序:(官网:Core Features (spring.io)


整合第三方技术

整合junit

整合MyBatis

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值