SpringBoot读取配置文件信息显示报错

一、描述错误

当我在读取自定义配置文件信息时,希望返回到前台(以json的格式),但是报错。

错误信息大致如下(未完全粘贴):

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.springframework.context.expression.StandardBeanExpressionResolver

二、大致情况

就是后台返回的数据不能正确被序列化

三、看代码

resource.properties

######################################
##########   存储配置相关的信息         ##########
######################################
com.xf.name=陈独秀
com.xf.age=21
com.xf.gender=男
com.xf.school=家里蹲大学
com.xf.address=里根

映射实体类:

package com.xf.database.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
/*
 * 读取自定义配置文件信息
 * 当在自定义配置文件存储中文时,读取文件信息的
 * @PropertySource(value="classpath:config/resource.properties",
encoding="UTF-8")
 *  需要指定编码encoding="UTF-8" 才不会显示乱码
 *
 */
@Configuration
@ConfigurationProperties(prefix="com.xf") //指定前缀
@PropertySource(value="classpath:config/resource.properties",
encoding="UTF-8")
public class CResource{
    /**
     *
     */
    private String name; // 姓名
    private Integer age; // 年龄
    private String school; // 学校
    private String address; // 地址
    private String gender; // 性别

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    @Override
    public String toString() {
        return "Resource [name=" + name + ", age=" + age + ", school=" + school + ", address=" + address + ", gender="
                + gender + "]";
    }

}

实体类

读取配置文件:

package com.xf.controllers;

import javax.annotation.Resource;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xf.database.entity.CResource;

@RestController
public class ReadConfigurationController {
    @Resource
    private CResource resource;

    @RequestMapping("/getresource")
    public String getResource() throws JsonProcessingException{
        ObjectMapper mapper = new ObjectMapper();
//        CResource c = new CResource();
//        c.setName(resource.getName());
//        c.setAge(resource.getAge());;
//        c.setAddress(resource.getAddress());
//        c.setSchool(resource.getSchool());
//        c.setGender(resource.getGender());
//        return mapper.writeValueAsString(c);
        return mapper.writeValueAsString(resource);
    }
}

若取消掉注释部分,,,那么就会最开始的那个报错。。

四、解决办法

重新实例化一个对象实例,并且把获取的值重新赋值,并以json的格式返回

ObjectMapper mapper = new ObjectMapper();
CResource c = new CResource();
c.setName(resource.getName());
c.setAge(resource.getAge());;
c.setAddress(resource.getAddress());
c.setSchool(resource.getSchool());
c.setGender(resource.getGender());
return mapper.writeValueAsString(c);

原文地址:https://www.cnblogs.com/crazy-xf/p/10101090.html

时间: 2024-10-08 18:29:27

SpringBoot读取配置文件信息显示报错的相关文章

IDEA中写MyBatis的xml配置文件编译报错的坑

IDEA中写MyBatis的xml配置文件编译报错的坑 说明:用IDEA编译工具在项目中使用Mybatis框架,编写mybatis-config.xml和Mapper.xml配置文件时,编译项目出现错误,错误提示为: xml中1字节的UTF-8序列的字节1无效 The cause of this is a file that is not UTF-8 is being parsed as UTF-8. It is likely that the parser is encountering a

.net 读取Excel文件报错

错误内容 Microsoft Office Excel 不能访问文件“D:\WWWRoot\Website\Test\Excels\Test1.xls”. 可能的原因有: 1 文件名称或路径不存在. 2 文件正被其他程序使用. 3 您正要保存的工作簿与当前打开的工作簿同名. 解决办法: 1 1).通过webconfig中增加模拟,加入管理员权限, <identity impersonate="true" userName="系统管理员" password=&q

读取TFRecord文件报错

读取保存有多个样例的TFRecord文件时报错: InvalidArgumentError (see above for traceback): Input to reshape is a tensor with 14410143 values, but the requested shape has 230400 [[Node: Reshape = Reshape[T=DT_UINT8, Tshape=DT_INT32, _device="/job:localhost/replica:0/ta

关于springboot 连接mysql 数据库报错问题

springboot连接MySQL运行报错: The server time zone value '?D1ú±ê×?ê±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zon

Python读取txt文件报错:UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xc8 in position 0

Python使用open读取txt中文内容的文件时,有可能会报错,报错内容如下:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0. 这里举一个例子:txt=open("threekingdoms.txt","r",encoding="utf-8").read(),在运行时就会报错. 要处理这个问题有两个办法,如下: 第一个办法,将编码方式由utf-8改为g

SpringBoot+RabbitMQ启动出现报错问题总结org.springframework.amqp.AmqpConnectException: java.net.ConnectException和 java.net.SocketException: Socket Closed

环境: RabbitMQ是安装在虚拟机中Centos7 版本: RabbitMQ 3.5.7 SpringBoot 2.1.5 检查: 先检查端口,15672是插件的端口,在SpringBoot的配置文件中,应该使用5672 登录用户,如果你使用的是guest默认的用户,那么默认情况下只能在localhost登录,解决: 进入到etc的目录: 再进入到rabbitmq的目录并且在此目录下编辑一个名为rabbitmq.config的文件(注意:名字一定要是这个) 进入到文件编辑框,,加上如下的代码

读取Excel表格报错问题总结(用apache POI读取,表格稍微改动就报错导入不进去)

 首先是建立在用apachePOI解析Excel时一定几率是能成功解析导入的,如果一点也不能的话,也可以参考看看我总结的原因,也许也是导致你屡次导入不能的原因之一. 这个问题是前天客户反应的,不用下载的好的模版套进内容再导入的话就报错,怎么也导入不进去,客户即想用从其他直接导出的数据导入我们的产品中用想能自己复制一些其他的内容到自己建立的excel表格中导入进去.今天晚上特意抽出时间来总结一产生这个问题的几个原因. 第一个原因就是,我最后发现我们的产品中excel导入这个组件(用apache

Springboot读取配置文件的两种方法

第一种: application.yml配置中的参数: zip: Hello Springboot 方法读取: @RestController public class ControllerTest { //在这里读取配置文件 @Value("${zip}") private String zip; @GetMapping(value = "hello") public String hello(){ return zip; } } 第一种比较麻烦,推荐第二种: 首

SpringBoot导入mail依赖报错

报错:Missing artifact org.springframework.boot:spring-boot-starter-mail:jar:2.0.3 之前导入log4j时报的一样的错误,最后没解决,用的slf4j,这次又遇到一样的问题,不能坐视不管了,因为我必须要用到邮件发送. 百度各种信息,终于被我找到了... 解决步骤如下: 一.添加mail依赖,报错Missing artifact org.springframework.boot:spring-boot-starter-mail