wuxiongbo
挨踢工程师的自我修养
2018-08-21 09:34
采纳率: 50%
浏览 2.0k

spring boot 项目访问controller报错

搭建最基本的spring boot项目,版本是2.0.4.RELEASE。
整合mybatis, 从数据库中查询数据。
我想 通过浏览器,直接访问controller,看到json格式的数据;
但是,控制台中能看到查询的数据,接下来就报错。

Controller

 @Controller
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/findAll")
    @ResponseBody
    public List<User> findAll(){
        List<User> list = userService.findAll();

        System.out.println(Arrays.toString(list.toArray()));

        return userService.findAll();
    }

}

访问 http://localhost:1111/findAll
浏览器端没有显示json格式数据

控制台先显示查询出来的数据,然后报错;

 [User{id='122221', status='1', roleId='03bd3cc782b242bbab08c464ac35b0fa', 
 remark='监控大盘', UpdateTime=2018-08-16 15:10:27.0}, User{id='12222221', status='1', roleId='03bd3cc782b242bbab08c464ac35b0fa', remark='监控大盘', UpdateTime=2018-08-16 15:10:27.0}, User{id='yyx', status='1', roleId='yyx0101', remark='监控大盘', UpdateTime=2018-08-16 15:10:27.0}]


2018-08-21 17:03:55.089  INFO 17728 --- [a-EvictionTimer] c.n.e.registry.AbstractInstanceRegistry  : Running the evict task with compensationTime 410ms
2018-08-21 17:03:55.132 ERROR 17728 --- [nio-1111-exec-8] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/module/jaxb/JaxbAnnotationIntrospector] with root cause

java.lang.ClassNotFoundException: com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector

按照之前的想法,加上了@ResponseBody 注解后,方法返回的数据应该被springboot内置的jackson,转换成了json格式的数据, 然后浏览器端直接显示的。
不知道问题出在哪里?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

10条回答 默认 最新

  • wangke214813
    蓝色思念 2018-08-21 09:38

    试下去掉@ResponseBody,然后把@Controller换成@RestController

    点赞 评论
  • weixin_42632514
    慎独_llc 2018-08-21 09:46

    浏览器查看一下,数据是否返回页面了。
    1.如果返回了,说明是页面数据接收错误。
    2.如果页面没有返回,说明你后台的错误,找不到类,可以添加一下依赖

    点赞 评论
  • husong_
    明天的地平线 2018-08-21 09:52

    @RestController 是将请求换成json格式输出,你应该是哪里的配置不对,可以看看我的这边文章:https://somta.com.cn/#/blog/view/ef507e4e6e28434d9787ec715d406491 ,我也是用spring boo 2.0 整合mybatis的,有详细的过程和代码

    点赞 评论
  • naiqihe
    nacky_ 2018-08-21 10:13

    重点是java.lang.ClassNotFoundException: com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector,转json返回前台报错,pom.xml里面配置的架包不对,可以试试下面的添加配置

    com.fasterxml.jackson.core
    jackson-databind
    2.4.0

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.4.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.4.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>2.4.0</version>
    </dependency>
    
    <dependency>
        <groupId>com.fasterxml.jackson.module</groupId>
        <artifactId>jackson-module-jaxb-annotations</artifactId>
        <version>2.4.0</version>
    </dependency> 
    
    点赞 评论
  • chenhao1994
    chenhao1994 2018-08-21 10:16

    楼主试一下@RequestMapping这个注解看看可以不。把@GetMapping换掉。

    点赞 评论
  • wuxiongbo

    pom配置

     <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.example</groupId>
        <artifactId>spring-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>spring-demo</name>
        <description>Demo project for Spring Boot</description>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Finchley.SR1</spring-cloud.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!-- MyBatis启动器 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.2</version>
            </dependency>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!-- 配置c3p0连接池 -->
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.2</version>
            </dependency>
    
            <!-- eureka 注册中心 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
        <!-- springcloud -->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    
    
    点赞 评论
  • qq_27848369
    hot2dog 2018-08-22 01:44

    spring boot 版本换成 1.5.x 的,


    org.springframework.boot
    spring-boot-starter-parent
    1.5.7.RELEASE

    点赞 评论
  • qq_27848369
    hot2dog 2018-08-22 01:45


    org.springframework.boot
    spring-boot-starter-parent
    1.5.7.RELEASE
    <!-- lookup parent from repository -->

    
    
    点赞 评论
  • qq_18559903
    qq_18559903 2018-08-22 02:32

    可能是你UpdateTime 这个时间格式 引起的
    spring boot 默认支持一种时间格式 而你的时间格式不是默认格式导致报错
    而你打印出来的时间格式 又不是java的格式 类似这种 'Wed Jul 06 10:17:48 CST 2016'
    说明你格式化的啦 UpdateTime 这个属性是不是加啦 注解 格式化啦
    如果你要格式化时间 不用再注解属性格式化 可以在配置文件直接加
    spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.time-zone=GMT+8
    ps: 加啦这个配置以后 前端提交的时候 也要这种时间格式提交数据不是会报错

    点赞 评论
  • wuxiongbo

    确定了是方法返回数据后转换为json格式时出现问题;我在配置中改了一下,把eureka那段依赖注释掉后就正常访问了。。。问题解决了一半,但是接下来没办法用eureka了;

    点赞 评论

相关推荐