码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-12-11 13:04:46      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:play   path   lap   color   rri   pat   序列化   sed   string   

一、描述错误

当我在读取自定义配置文件信息时,希望返回到前台(以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);

 

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

标签:play   path   lap   color   rri   pat   序列化   sed   string   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!