1,application.yaml中配置没有生效问题解决

如果配置文件确认没有错误但是没有生效首先是要到编译目录去查看是否被编译过去了,如果没有,请先将项目clean在重启

但是idea启动项目时也会先build,又有可能配置文件没有被编译过去,真实坑爹!

另外,yaml文件中的那些坑:

(1)冒号:后面必须有空格,下级属性缩进一格(只支持空格不支持制表符tab)

(2)保证不能有重复的一级节点。

(3)如果参数是以空格开始或结束的字符串,应使用单引号把他包进来。如果一个字符串参数包含特殊字符,也要用单引号包起来。

如果字符串中本身包含单引号,则需要用‘’进行转义;如果字符串开头或结尾包含空格,则需要用单引号将整个字符串包裹

2,SpringBoot配置文件中context-path不起作用

SpringBoot 2.0.0.RELEASE版本后更新

  • yml写法:
server:
servlet:
context-path: /example
  • properties写法:
server.servlet.context-path=/example

3,Unable to find main class

背景:spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没有使用@SpringBootApplication注解)

4,当打完包后在本地的maven仓库中发现输出的可执行JAR非常小,并没有引用所有模块的JAR。

        <plugins>
<plugin>
<!--该插件主要用途:构建可执行的JAR -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration><!-- 指定该Main Class为全局的唯一入口 -->
<mainClass>com.sbcm.UserApplication</mainClass>
<layout>ZIP</layout>
<outputDirectory>
${package.base.url}
</outputDirectory>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<!--可以把依赖的包都打包到生成的Jar包中-->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>

5,跳过测试用例

在工作中,很多情况下我们打包是不想执行测试用例的,可能是测试用例不完事,或是测试用例会影响数据库数据.

            <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>

6,不能识别dao里面的接口,提示找不到bean



启动抱错:



这里我是在SpringBoot中集成MyBatis,使用的旧的xml文件写sql的集成方式,我以为只有用新的注解方式写sql才会需要@Mapper注解和@MapperScan注解,其实就算用旧的xml方式也需要在入口文件加上@MapperScan注解才能扫描到dao文件,@Mapper倒是不需要。

7,@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) 的 作用是 :取消数据库配置。

所以在用到数据库的时候记得将他改为 @SpringBootApplication ,

否则会报错:如下

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'xxController': Unsatisfied dependency expressed through field 'xxMapper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxMapper' defined in file [D:\workspacesidea\pear\target\classes\com\wqq\mapper\xxMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

8,Spring boot跨模块调用问题

背景:

项目两个独立模块user和task,两个独立的服务提供模块,现在只启动了user模块,想在浏览器访问task模块的服务。

方法:

1,把task也启动,这样最简单,不过有多个其他模块也要访问的话只能都启动,明显不太方便。

2,把task加到user的依赖里面去,就是在user的pom里面添加task模块,还需要在user的扫描的注解@ComponentScan里面扩大范围,让他能扫描到task的注解,不然task的服务也找不到,不过这样会导致强耦合,因为user和task是两个独立的服务模块

3,使用Spring cloud,把user和task注册到服务中心,互相通过serverName调用。(推荐)

9,spring boot与cloud构建微服务,返回数据从json格式 变成了 xml格式

1、问题:

 本身spingboot项目是用@RestController注解,返回结果也是json格式,但是结合springcloud的eureka构建微服务之后,无论是消费者还是提供者,均返回的xml格式

2、分析

今天正好遇到了这个问题,查阅了很多东西大致弄明白了。引入了jackson-dataformat-xml这个依赖,它是提供了jackson将实体类转化为xml相关的作用。而本身jackson是可以将实体类转化为json的,所以这样Jackson是可以将实体类转化为两种类型的数据,而具体要转化为哪一种数据,是要看http请求里面的accept头信息的,我的浏览器chrome的accept是 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 ,然后服务器会根据accept来决定是返回xml还是json,由于浏览器accept只有最后的/是匹配 application/json的,而application/xml在/前面,优先级比json高,所以用浏览器直接调用是会优先返回xml格式的。**

3、解决方案有两种:

1.自己调用接口的时候修改accept信息,改为application/json (postman之类的工具)

提供者与消费者的方法上或者所属类上添加 produces=“application/json”,



2.添加依赖

<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-xml-provider</artifactId>
</dependency>

然后就可以使用后缀来调用相关的接口获取对应格式的数据了。比如我有个url localhost/get/user 返回一个用户数据添加了上面的依赖后,如果想获取xml格式的,就使用localhost/get/user.xml来调用接口;如果想获取json格式就要用localhost/get/user.json来调用接口它的原理是服务器根据后缀主动修改了accept信息

9,EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.



如果在Eureka Server的首页看到以下这段提示,则说明Eureka已经进入了保护模式:

一般出现此模式时,服务返回错误。即如果真实的服务已经Down掉,但在注册中心界面服务却一直存在,且显示为UP状态。

参考:https://blog.csdn.net/cvntopuyef/article/details/78477681

SpringBoot + SpringCloud的爬坑之旅的更多相关文章

  1. 记一次项目使用webuploader爬坑之旅

       因前端页面开发使用的为VUE开发,又要支持IE9,遂只有基于webuploader封装一个上传组件.地址:https://github.com/z719725611/vue-upload-web ...

  2. SpringBoot + SpringCloud学习踩坑实记

     踩的坑: 1).springcloud框架中,依赖一直报错,很可能是没有添加springcloud的依赖,或者是依赖的版本号过低.并且springboot也有一个父依赖. 2.springcloud ...

  3. vue-element-admin跟springboot+shiro部署爬坑记

    今天把前端采用vue-element-admin与springboot的项目部署到正是线上,在开发线上很OK的,一放上去我的天啊,坑是真的多阿.下面听我一一道来:我这边采用的是nginx服务器部署. ...

  4. Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

    前言 开发做得久了,总免不了会遇到各种坑.而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页面 ...

  5. 【转】Android M(6.0) 权限爬坑之旅

    原文网址:https://yanlu.me/android-m6-0-permission-chasm/ 有一篇全面介绍Android M 运行时权限文章写的非常全面:Android M 新的运行时权 ...

  6. Android M(6.0) 权限爬坑之旅

    坑一:用Android5.0编译的apk,在Android6.0上运行完全没有问题. 在Android6.0以上才需要在运行时请求权限,在旧Android版本上保留原有逻辑,安装时授予权限. 用旧版本 ...

  7. 【转】VUE 爬坑之旅-- 如何对公共JS,CSS进行统一管理,全局调用

    原文:https://blog.csdn.net/zgh0711/article/details/78664262 vue 中,将页面分为了各个组件,我们写好组件,就可以将这个组件运用到其他各个页面中 ...

  8. dotNet程序员的Java爬坑之旅(三)之spring MVC篇一

    使用maven構建springMVC項目,開發工具為IDEA 一.構建Maven項目,模板為WebApp 二.在pom文件中配置SpringMvc配置(springMvc需要以來servlet ,如本 ...

  9. dotNet程序员的Java爬坑之旅(二)

    囉里囉唆的寫了一大堆,最後還是全刪除了.哎~ 言歸正傳,最近因爲發生了很多事情,所以更新的有嗲晚了,最近也一直在學習,但是感覺效率什麽的不是很高,這是不對的,反思一下,從這篇博文開始,打起精神吧. M ...

随机推荐

  1. vue2.x学习笔记(十一)

    接着前面的内容:https://www.cnblogs.com/yanggb/p/12586416.html. 表单的输入绑定 表单的输入绑定是一块很重要的内容,因为所有的业务系统都离不开基础表单的录 ...

  2. Servlet 和 Servlet容器

    Servlet 很多同学可能跟我一样始终没有搞清楚到底什么是 Servlet,什么是 Servlet 容器.网上看了很多帖子,或许人家说的很清楚,但是自己的那个弯弯就是拐不过来. 想了很久说一下自己的 ...

  3. 【山外问道】Linux UUID的查询方法

    本文打印版下载地址 [山外问道]Linux_UUID的查询方法-打印版.pdf 一.查询存储设备的UUID 1.使用blkid命令查看 (1)查询所有存储设备的UUID:blkid. (2)查询指定设 ...

  4. nginx+vue+thinkphp5.1部署,解决前端刷新404,以及前端404解决后,后台又404的问题

    宝塔的话直接在网站的伪静态一栏中如下就行 location /admin { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 la ...

  5. Docker基本使用(一)

    一.为什么使用容器? 1. 上线流程繁琐开发->测试->申请资源->审批->部署->测试等环节2. 资源利用率低普遍服务器利用率低,造成过多浪费3. 扩容/缩容不及时业务 ...

  6. Robot Framework -002 在Windows10上的安装

    机器人框架是使用Python实现的,并且还支持Jython(JVM),IronPython(.NET)和PyPy. 在安装框架之前,一个明显的前提条件是至少安装这些解释器之一. 下面列出了安装Robo ...

  7. nodeJS生成xlsx以及设置样式

    参考: https://www.npmjs.com/package/xlsx-style https://www.jianshu.com/p/877631e7e411 https://sheetjs. ...

  8. INTERVIEW #5

    笔试 150min,3题,每题100分,自己果然还是个蒟蒻呢~ 最近状态好差,虽然做了一些题,但还是考得稀烂,大概有几点需要加强: 独立做题,不要一边看板子一边写代码,更不要一开始就看题解: 对之前研 ...

  9. swipe 滑动操作

    1.swipe() 滑动用法 swipe(self, start_x, start_y, end_x, end_y, duration=None) :Args: - start_x - 开始滑动的x坐 ...

  10. Linux下swap到底有没有必要使用

    周五看到QQ群里在讨论Linux主机上到底需不需要开启swap空间,而且目前公有云主机默认都是把swap关了的,很多公司也是没有开启swap,那到底需不需要开启呢? 我之前在看<鸟哥的Linux ...