最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java與Spring?boot后端項(xiàng)目Bug超全總結(jié)

 更新時(shí)間:2023年06月02日 10:24:53   作者:yumuing  
Spring Boot是一個(gè)開源的 Java 開發(fā)框架,它的目的是簡(jiǎn)化Spring應(yīng)用程序的開發(fā)和部署,下面這篇文章主要給大家介紹了關(guān)于Java與Spring?boot后端項(xiàng)目Bug的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

Bug 收集與總結(jié)

本文記錄的是 SpringBoot 后端項(xiàng)目使用和運(yùn)行代碼時(shí)所遇到的各種問(wèn)題,全部都已解決!僅以本文記錄學(xué)習(xí)社區(qū)項(xiàng)目時(shí),所遇到的奇奇怪怪的 bug,以及一些很愚蠢的錯(cuò)誤,以警醒自己不再犯同樣的錯(cuò)誤,共勉!一起進(jìn)步!

請(qǐng)求參數(shù)定義多次,無(wú)法訪問(wèn)

出現(xiàn)原因:

  • 在 @RequestMapping 中已經(jīng)定義 params,又在 @RequestParam 中定義 params,導(dǎo)致出現(xiàn)錯(cuò)誤。
  • 如果參數(shù)前寫了@RequestParam(xxx),并且沒(méi)有添加 require = false ,那么前端必須有對(duì)應(yīng)的xxx名字才行,不然,就會(huì)發(fā)生錯(cuò)誤。
  • @RequestBody接收數(shù)據(jù)時(shí),前端不能使用GET方式提交數(shù)據(jù),而是用POST方式進(jìn)行提交。否則也會(huì)發(fā)生錯(cuò)誤。
  • 訪問(wèn)靜態(tài)文件時(shí),路徑為放置在 resource/static 目錄下的相對(duì)路徑,如 test.html 文件在/resourse/static/html/test.html,路徑即為 localhost:端口號(hào)/html/test.html,除非配置了全局url 前綴。

錯(cuò)誤效果如下:

訪問(wèn)頁(yè)面顯示

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.

Fri Feb 03 21:33:35 HKT 2023 There was an unexpected error (type=Bad Request, status=400).

控制臺(tái)輸出

2023-02-03T21:33:35.418+08:00  INFO 24684 --- [nio-8888-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-02-03T21:33:35.418+08:00  INFO 24684 --- [nio-8888-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2023-02-03T21:33:35.418+08:00  INFO 24684 --- [nio-8888-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 0 ms
2023-02-03T21:33:35.430+08:00  WARN 24684 --- [nio-8888-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.UnsatisfiedServletRequestParameterException: Parameter conditions "username, password" not met for actual request parameters: ]

解決方案:

  • 第一種:刪去 @RequestMapping 中多余的定義即可。
  • 第二種:要么添加 require = false ,要么請(qǐng)求添加對(duì)應(yīng)參數(shù),要么后端不加該參數(shù)
  • 第三種:使用 Post 請(qǐng)求,或者刪去這個(gè)注解
  • 第四種:書寫正確路徑即可

注:System.out.printf() 為控制臺(tái)輸出,return、HttpServletResponse等等都是頁(yè)面輸出。

找不到模板文件

控制臺(tái)報(bào)錯(cuò):

Error resolving template template might not exist or might not be accessible;

解決方案:

  • 修改 application.yml 文件中的配置為:

保證能夠讀取 html 文件,注意前有一英文半角 ”點(diǎn)“ ,設(shè)置 cache 為不緩存,保證實(shí)時(shí)修改,實(shí)時(shí)生效,生產(chǎn)環(huán)境推薦,方便調(diào)試,部署環(huán)境改為緩存型。設(shè)置文件路徑,/templates 后不要加斜桿。

spring:
  thymeleaf:
    suffix: .html
    encoding: utf-8
    mode: HTML5
    cache: false
    prefix: classpath:/template
  • 修改 Controller 函數(shù)訪問(wèn)模板路徑為為相對(duì)路徑,如:/demo/view ,記得最前面有斜杠,最后面沒(méi)有斜杠,不需要寫后綴名,默認(rèn) html

Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required

springboot 3版本整合 mybatis 3.0.5版本控制臺(tái)報(bào)錯(cuò) Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required,NestedIOException 這個(gè)類在 Spring 6 版本中直接刪除了。對(duì)的,直接刪除了。而 MyBatis 老版本還沒(méi)有同步更新,所以直接就報(bào)紅了。而整合 mybatis 的 mybatis-plus 自然也會(huì)報(bào)紅。

2022 年 11 月26 日凌晨,mybatis-spring-boot 正式發(fā)布 3.0.0 版本,完全支持 Spring Boot 3 了。mybatis-plus 也在 2022.12.28 的 3.5.3 支持了 Spring Boot 3 。最好解決辦法就是升級(jí)版本。

Could not autowire. No beans of ‘DataSource’ type found

  • 檢查項(xiàng)目結(jié)構(gòu),主啟動(dòng)類位置是否正確
  • 把自動(dòng)裝配@Autowired換成@Resource

Driver com.mysql.jdbc.Driver claims to not accept jdbcUrl

該報(bào)錯(cuò)是配置文件路徑錯(cuò)誤,重點(diǎn)檢查url路徑,3306后的 test 為數(shù)據(jù)庫(kù)名,注意修改成數(shù)據(jù)庫(kù)已有數(shù)據(jù)庫(kù)名

mysql8.x版本URL為 jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=utf8

Cannot resolve method ‘assertEquals’ in ‘Assert’

在測(cè)試方法中,使用該方法報(bào)錯(cuò),沒(méi)引入 import org.junit.Assert; 的Assert 包,解決方法如下:

1.引入 junit 依賴

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

2.導(dǎo)入正確包 import org.junit.Assert; 的Assert

Injection of resource dependencies failed

測(cè)試方法控制臺(tái)輸出:Injection of resource dependencies failed

確定報(bào)錯(cuò)對(duì)象為 userMapper,發(fā)現(xiàn)沒(méi)有指定 MapperScan,解決如下:

在啟動(dòng)類加入:@MapperScan(“top.yumuing.community.mapper”) 即可

Could not autowire. No beans of ‘DataSource’ type found.

編譯報(bào)錯(cuò):Could not autowire. No beans of ‘DataSource’ type found. 代碼如下:

@Autowired
DataSource dataSource;

修改 @Autowired 為 @Resource 即可解決

FUNCTION community.count does not exist. Check the ‘Function Name Parsing and Resolution’ section in the Reference Manual

查詢分頁(yè)總頁(yè)數(shù)時(shí)出現(xiàn)

使用如下代碼出現(xiàn)報(bào)錯(cuò):

<select id="selectDiscussPostRows" resultType="int">
    select count (id)
    from discuss_post
    where status != 2
    <if test="userId!=0">
    and user_id = #{userId}
    </if>
</select>

原因時(shí)是 count (id) 代碼中,count 與 (id)存在空格,刪去空格,變成count(id)即可

spirngboot 啟動(dòng)報(bào)duplicate key錯(cuò)誤

錯(cuò)誤配置:

錯(cuò)誤配置

正確配置:

正確配置

Could not autowire. No beans of ‘JavaMailSender’ type found.

Incompatible types. Found: ‘jakarta.mail.internet.MimeMessage’, required: ‘org.springframework.mail.javamail.MimeMailMessage’

錯(cuò)誤依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>2.1.5.RELEASE</version>
<dependency> 

在 2.1.xx 版本的 spring-boot-starter-mail 使用的都是 javax,而在 2.2.xx 的版本中采用的是 Jakarta

Jakarta Mail的前生是JavaMail。JavaMail最后一個(gè)版本是于2018年8月發(fā)布,已經(jīng)停止更新。新項(xiàng)目應(yīng)該使用 Jakarta Mail。

如果混用,將會(huì)報(bào)以上錯(cuò)誤,請(qǐng)勿導(dǎo)包錯(cuò)誤,在 .2.xx 的版本中 ,javaMailSender.createMimeMessage() 傳輸?shù)氖?Jakarta

正確導(dǎo)包示例:springboot 3 下使用 3.0.2 版本的 spring-boot-starter-mail ,前提:配置好郵件使用

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
    <version>3.0.2</version>
<dependency> 
package top.yumuing.community.util;

import jakarta.mail.MessagingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;

@Component
public class MailClient {
    private static final Logger logger = LoggerFactory.getLogger(MailClient.class);

    @Autowired(required = false)
    private JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    private String mailFrom;

    public void sendMail(String to, String subject, String content){
        try {
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true);
            mimeMessageHelper.setFrom(mailFrom);
            mimeMessageHelper.setTo(to);
            mimeMessageHelper.setSubject(subject);
            mimeMessageHelper.setText(content, true);
            javaMailSender.send(mimeMessageHelper.getMimeMessage());
            logger.info("郵件發(fā)送成功!");
        }catch (MessagingException e){
            logger.error("發(fā)送郵件失??!");
        }
    }
}

An error happened during template parsing (template: “class path resource [templates/site/register.html]”

錯(cuò)誤配置:

spring:
  thymeleaf:
	prefix: classpath:/templates

正確配置:

spring:
  thymeleaf:
	prefix: classpath:/templates/

css、js文件配置:放置在 static 下

  1. 如果首字符是“/”,則從項(xiàng)目的根目錄開始,可以認(rèn)為是項(xiàng)目下的絕對(duì)路徑。
    一般項(xiàng)目默認(rèn)static就是根路徑,所以static下的路徑中不能寫static,應(yīng)當(dāng)以 / 代替
  2. 如果首字符不是“/”,而是直接以目錄名開始,則以當(dāng)前路徑為參考系,可以認(rèn)為是以當(dāng)前路徑為參考的相對(duì)路徑
  3. 使用“…/”,以當(dāng)前路徑為參考系的上一層路徑

No primary or single unique constructor found for interface javax.servlet.http.HttpServletResponse

springboot3 下導(dǎo)不了 javax.servlet.http 包,必須導(dǎo) jakarta.servlet.http

也就是 http 包 又更改了。

import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

不能導(dǎo)

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

檢查字節(jié)碼校驗(yàn) 運(yùn)行不影響的警告

OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
“ OpenJDK 64位服務(wù)器VM警告:JDK 13中不建議使用選項(xiàng)-Xverify:none和-noverify,并且可能會(huì)在其中刪除將來(lái)的版本”

-Xverify:no 或者 -noverify 這兩個(gè)都是 JVM 參數(shù),可以禁止字節(jié)碼校驗(yàn),提高編譯速度,但是就如同警告所說(shuō),這兩個(gè)參數(shù)已經(jīng)過(guò)時(shí)了?,F(xiàn)在 JVM 的運(yùn)行速度已經(jīng)十分迅速,無(wú)需這兩個(gè)參數(shù)來(lái)加速了。

為不影響代碼運(yùn)行的一條警告。解決方法如下:

  • IDEA 軟件下
  • 頂部菜單下的 Run 選項(xiàng)中的 Edit configurations
  • 取消勾選 Enable lanuch optimization
  • 點(diǎn)擊 apply 即可
  • 其他軟件下

刪掉用戶變量 _JAVA_OPTIONS

根據(jù)Stack Overflow 上的帖子說(shuō),有些項(xiàng)目會(huì)自動(dòng)將 _JAVA_OPTIONS 加到用戶環(huán)境變量中,例如今天我們所討論的警告就有可能是 _JAVA_OPTIONS 的值設(shè)置成了 -Xverify:no 或者 -noverify

依賴下載或者導(dǎo)入失敗

查找順序:本地倉(cāng)庫(kù)、鏡像倉(cāng)庫(kù)(國(guó)內(nèi))、中央倉(cāng)庫(kù)(國(guó)外)

解決方法:

設(shè)置鏡像

<!--阿里云鏡像(淘寶鏡像)-->
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>;
</mirror>
</mirrors>

設(shè)置私服倉(cāng)庫(kù)

核心配置文件不生效

目前,SpringBoot 指定的核心配置文件為 application.properties 或者 application.yml (yaml)。如果,出現(xiàn)拼寫錯(cuò)誤、配置文件優(yōu)先級(jí)不夠高或者沒(méi)有放入的目錄優(yōu)先級(jí)不夠高,被覆蓋,都有可能失效。

優(yōu)先級(jí)如下:

  • 同級(jí)目錄下:
    • properties 高于 yaml 高于yml:后兩個(gè)純粹是執(zhí)行速度導(dǎo)致的優(yōu)先級(jí)問(wèn)題。

pom文件的 spring-boot-maven-plugin報(bào)紅

IDEA 在右側(cè)的 Mave 選項(xiàng)卡中,點(diǎn)擊左上角刷新即可,靜待下載完成。

使用自動(dòng)注入時(shí),屬性為空

  • 創(chuàng)建的類的沒(méi)有加入@Component,沒(méi)有注入;
  • 創(chuàng)建的類沒(méi)有書寫 get set 方法
  • 配置文件書寫語(yǔ)法錯(cuò)誤

yaml 或 yml

person:
  name: qinjiang
  age: 3
  happy: false
  birth: 2000/01/01
  maps: {k1: v1,k2: v2}
  lists:
   - code
   - girl
   - music
  dog:
    name: 旺財(cái)
    age: 1

@ConfigurationProperties(prefix = “image”) 中 prefix 屬性不匹配,即在配置文件中沒(méi)有前綴為 prefix 的值。

在使用方法中沒(méi)有 @Autowired 實(shí)現(xiàn)注入 ,正確使用如下:

@Autowired
ImagePost image;

使用自定義 yaml 或 yml 實(shí)現(xiàn)自動(dòng)注入時(shí),屬性為空

@Component
@PropertySource(value = "classpath:PostMessage.yml")
@ConfigurationProperties(prefix = "image")

查詢資料可知,@PropertySource 注解目前不支持 yaml 或 yml 解析,也就是說(shuō),自定義的 yaml 或 yml 文件指定失敗。故加入自定義解析類,在 main 目錄下,代碼如下:

import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class YamlPropertySourceFactory implements PropertySourceFactory {
    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
        Properties propertiesFromYaml = loadYamlIntoProperties(resource);
        String sourceName = name != null ? name : resource.getResource().getFilename();
        return new PropertiesPropertySource(sourceName, propertiesFromYaml);
    }
    private Properties loadYamlIntoProperties(EncodedResource resource) throws FileNotFoundException {
        try {
            YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
            factory.setResources(resource.getResource());
            factory.afterPropertiesSet();
            return factory.getObject();
        } catch (IllegalStateException e) {
            // for ignoreResourceNotFound
            Throwable cause = e.getCause();
            if (cause instanceof FileNotFoundException) {
                throw (FileNotFoundException) e.getCause();
            }
            throw e;
        }
    }
}

之后,修改注解 @PropertySource 的解析類,如下:

@PropertySource(value = "classpath:PostMessage.yml",factory = YamlPropertySourceFactory.class)

再次測(cè)試,成功注入。

Postman 文件無(wú)法上傳

Postman 軟件具有一個(gè)工作空間,所有的文件操作都是在工作空間中完成的,所以,如果出現(xiàn)文件上傳失敗,即如下情況:

image.png

出現(xiàn)這種情況,只需把所需文件復(fù)制到工作空間,再重新在工作空間中選中文件即可。

Spring-boot-maven-plunge 爆紅

<plugins>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
</plugins>

下載失敗,添加阿里云鏡像加上相應(yīng)的版本號(hào)

總結(jié)

到此這篇關(guān)于Java與Spring boot后端項(xiàng)目Bug超全總結(jié)的文章就介紹到這了,更多相關(guān)Java后端項(xiàng)目Bug內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中session存儲(chǔ)Users對(duì)象實(shí)現(xiàn)記住密碼

    Java中session存儲(chǔ)Users對(duì)象實(shí)現(xiàn)記住密碼

    這篇文章主要介紹了Java中session存儲(chǔ)Users對(duì)象實(shí)現(xiàn)記住密碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java 對(duì)象的序列化和反序列化詳細(xì)介紹

    java 對(duì)象的序列化和反序列化詳細(xì)介紹

    這篇文章主要介紹了java 對(duì)象的序列化和反序列化的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Java網(wǎng)絡(luò)編程:Socket套接字、TCP和UDP協(xié)議以及Java高性能實(shí)戰(zhàn)

    Java網(wǎng)絡(luò)編程:Socket套接字、TCP和UDP協(xié)議以及Java高性能實(shí)戰(zhàn)

    本文介紹了網(wǎng)絡(luò)編程的基礎(chǔ)知識(shí),包括Socket套接字、TCP和UDP協(xié)議的區(qū)別以及如何使用Java實(shí)現(xiàn)網(wǎng)絡(luò)服務(wù)器,通過(guò)實(shí)戰(zhàn)代碼,展示了如何從單線程到高性能線程池模型構(gòu)建網(wǎng)絡(luò)服務(wù)器,并探討了常見的網(wǎng)絡(luò)編程問(wèn)題和解決方法
    2026-02-02
  • Java instanceof關(guān)鍵字的的進(jìn)一步理解

    Java instanceof關(guān)鍵字的的進(jìn)一步理解

    這篇文章主要介紹了Java instanceof關(guān)鍵字的的進(jìn)一步理解,本文用一些實(shí)例講解了instanceof操作符的一些知識(shí),需要的朋友可以參考下
    2015-03-03
  • 在非Spring管理對(duì)象中注入Spring Bean的解決方案

    在非Spring管理對(duì)象中注入Spring Bean的解決方案

    在SpringBoot開發(fā)中,我們習(xí)慣了通過(guò)@Autowired/@Resource等注解輕松注入依賴 Bean,但在WebSocket、定時(shí)任務(wù)等場(chǎng)景下,會(huì)遇到一個(gè)核心問(wèn)題:非Spring創(chuàng)建的對(duì)象無(wú)法直接注入 Spring Bean,所以本文給大家介紹了在非Spring管理對(duì)象中注入Spring Bean的解決方案
    2026-02-02
  • 基于Spring Boot + Nacos + Dubbo自定義鑒權(quán)過(guò)濾器實(shí)現(xiàn)方案解析

    基于Spring Boot + Nacos + Dubbo自定義鑒權(quán)過(guò)

    本文介紹了基于SpringBoot+Nacos+Dubbo的自定義鑒權(quán)過(guò)濾器實(shí)現(xiàn)方案,介紹了如何通過(guò)Nacos配置中心實(shí)現(xiàn)鑒權(quán)規(guī)則的動(dòng)態(tài)配置,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • spring boot加載資源路徑配置和classpath問(wèn)題解決

    spring boot加載資源路徑配置和classpath問(wèn)題解決

    這篇文章主要介紹了spring boot加載資源路徑配置和classpath問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 基于Java語(yǔ)言MD5加密Base64轉(zhuǎn)換方法

    基于Java語(yǔ)言MD5加密Base64轉(zhuǎn)換方法

    這篇文章主要為大家詳細(xì)介紹了基于Java語(yǔ)言的MD5加密Base64轉(zhuǎn)換方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 解讀@ConfigurationProperties的基本用法

    解讀@ConfigurationProperties的基本用法

    這篇文章主要介紹了@ConfigurationProperties的基本用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • SpringBoot+MyBatisPlus中樂(lè)觀鎖的實(shí)現(xiàn)示例

    SpringBoot+MyBatisPlus中樂(lè)觀鎖的實(shí)現(xiàn)示例

    樂(lè)觀鎖是一種用于解決并發(fā)沖突的機(jī)制,在數(shù)據(jù)庫(kù)中用于保護(hù)數(shù)據(jù)的一致性,本文主要介紹了SpringBoot+MyBatisPlus中樂(lè)觀鎖的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08

最新評(píng)論

北安市| 潼关县| 军事| 沁水县| 六盘水市| 邢台市| 舒兰市| 永新县| 神农架林区| 凤庆县| 丰镇市| 凤凰县| 天津市| 密山市| 东丰县| 衢州市| 洛阳市| 阿坝县| 广河县| 宁夏| 凯里市| 文昌市| 安阳市| 响水县| 海丰县| 滁州市| 通山县| 三原县| 宜州市| 白玉县| 绩溪县| 高碑店市| 张北县| 车险| 新晃| 万宁市| 敦化市| 凌海市| 思南县| 卫辉市| 永胜县|