基于@AllArgsConstructor与@Value共用的问题解决

目录
  • @AllArgsConstructor与@Value共用的问题解决
    • 看下面这段代码
    • 如何解决这个问题呢?
  • @AllArgsConstructor导致@value注入失败
    • 解决方法

@AllArgsConstructor与@Value共用的问题解决

平时我们用lombok的方式来实现Bean的构造函数方式的注入,但是当遇到@Value注解的时候,就会出现问题,

看下面这段代码

/**
 * @author sunhan
 */
@RestController
@AllArgsConstructor
@RequestMapping("test")
public class TestController {
    @Value("${test}")
    private String test;
    private TestService testService;
    @GetMapping()
    public String get() {
        System.out.println(test);
        return testService.get();
    }
}

启动项目的时候,会抛出异常

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.good.base.controller.TestController required a bean of type 'java.lang.String' that could not be found.

Action:

Consider defining a bean of type 'java.lang.String' in your configuration.

如何解决这个问题呢?

其实很简单,将AllArgsConstructor改成RequiredArgsConstructor,然后把需要注入的bean改成final类型的,就可以了

@RestController
@RequiredArgsConstructor
@RequestMapping("test")
public class TestController {
    @Value("${test}")
    private String test;
    private final TestService testService;
    @GetMapping()
    public String get() {
        System.out.println(test);
        return testService.get();
    }
}

参考:这里

@AllArgsConstructor导致@value注入失败

@AllArgsConstructor
@RestController
@RequestMapping("xx/xx" )
public class WxUserController extends BaseController {
    private final WxUserService service;
    private final PointsDetailService pointsDetailService;
    private final WxUserPointsService wxUserPointsService;
    @Value("${points.registerPoints}")
    private int registerPoints;
................................
}

直接项目启动失败,报错如下:

解决方法

本人是去掉@AllArgsConstructor,使用@autowired进行注入,应该还有别的方法可以解决这个冲突,我没有试

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Springboot中@Value的使用详解

    Springboot通过@Value注解将配置文件中的属性注入到容器内组件中(可用在@Controller.@Service.@Configuration.@Component等Spring托管的类中) 1.普通字符串注入 例:yml中存在key: name: zs @Value注入 @Value("${name}") public String name; 当yml中的name没有对应值时,即yml中为: name: 此时字符串name的值为"" 可设置注入属性的

  • SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解

    目录 注解@ConfigurationProperties 注解@Value 区别 松散语法绑定: SpEl语法表示: JSR303数据校验: 复杂类型封装: 配置文件注入值数据校验 注解@ConfigurationProperties 该注解的作用是将配置文件中配置的每一个属性的值,映射到这个组件中.@ConfigurationProperties :告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定 prefix = "person":配置文件中哪个下面的所有

  • Spring中利用配置文件和@value注入属性值代码详解

    1 简单属性值注入 package com.xy.test1; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @Service // 需要被注入属性值的类需要被Spring管理 public class PropertiesService1 { // 利用@Value注解,即使没有该属性或者属性文件也不会报错 // @Value输入

  • 基于@AllArgsConstructor与@Value共用的问题解决

    目录 @AllArgsConstructor与@Value共用的问题解决 看下面这段代码 如何解决这个问题呢? @AllArgsConstructor导致@value注入失败 解决方法 @AllArgsConstructor与@Value共用的问题解决 平时我们用lombok的方式来实现Bean的构造函数方式的注入,但是当遇到@Value注解的时候,就会出现问题, 看下面这段代码 /** * @author sunhan */ @RestController @AllArgsConstructo

  • 基于Vue中的父子传值问题解决

    主题是Vue中几种常见的传值方法...先写个父子传值吧 vue-cli构建项目目录,噜啦啦,这个就不用说了吧. 接着创建父子组件,父组件Father.vue,子组件Son.vue(随意起名,开心就好),然后在父组件中引入子组件,创建一个父组件的路由.车门已经焊死了,请继续往下看 1.父传子 Father.vue(用v-bind(简写 : ) 将父组件传的值绑定到子组件上) <template> <div> 我是爸爸:{{message}} <hr> <Son :t

  • PHP基于curl post实现发送url及相关中文乱码问题解决方法

    本文实例讲述了PHP基于curl post实现发送url及相关中文乱码问题解决方法.分享给大家供大家参考,具体如下: 这个问题困扰我几天了,发送的指定网址的url参数,中文总是乱码,指定网址是utf8编码的,我发送的也是utf8编码的.但是还是乱码,开始用的file_get_contents,后来换成curl并在php.ini中开启了php_curl,还是不行,又加了header终于解决.代码如下: $url = 'http://'; //调用接口的平台服务地址 $post_string = a

  • python被修饰的函数消失问题解决(基于wraps函数)

    这篇文章主要介绍了python被修饰的函数消失问题解决(基于wraps函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 当使用@修饰符修饰函数时,会存在这样一个问题:被修饰的函数会消失(这是因为修饰函数没有设置返回值,如果设置了返回值,则就把返回值赋给被修饰函数,比如,test1函数的返回值设置为 return 6, 那么就把6赋值给test2,test2就不再是一个函数,而是一个int类型的变量,值就是6): def test1(A):

  • 基于bootstrap页面渲染的问题解决方法

    本人不擅长前台,写此文只是讲一下我解决页面渲染的一个小的解决办法,或许这个方法大家早知道了,但是应该还会有像我一样还在纠结的小伙伴,帮助一下像我一样的不擅长前台的童鞋. 这几天正在做一个后台管理的小项目,从网上找了个基于bootstrap的ui模板,参考了一般系统的做法,都是上面一个navbar,左侧一个目录树,然后空出来的一大片地方放置内容.然后各种把每个区域都提出去,弄成一个一个的小文件,然后include到一个大文件中. 当做到内容区域的时候就在考虑,内容是放在iframe中进行局部渲染,

  • 基于element-ui对话框el-dialog初始化的校验问题解决

    不刷新页面重新打开el-dialog时,如果我们绑定了rules或者某个值需要required,它总会自动校验. 查看了多个博文,发现常用的有两种解决方法(下列方法都可以在其他博文查看,不再细写,如有需要请自行查询): 1.给dialog套上v-if : 2.在关闭dialog时,监听关闭回调,清除校验. 我在自己的项目里使用了上述两种方法,都不太好用,自己琢磨出了另一种方法: <el-dialog @open="openDialog()"> </el-dialog&

  • 基于mouseout和mouseover等类似事件的冒泡问题解决方法

    最近写点东西,比较闹心,一个弹出层,上边有其他元素,本意是鼠标离开弹出层时,执行一些动作,但在实际应用中,鼠标离开弹出层中的元素时,也会激活这些动作.试了各浏览器的停止事件冒泡的方法,均无效. 还是咱们javaeye里高人众多,在一个哥们博客中发现了如下代码: 复制代码 代码如下: function isMouseLeaveOrEnter(e, handler) {            if (e.type != 'mouseout' && e.type != 'mouseover')

  • 基于feign传参MultipartFile问题解决

    目录 feign传参MultipartFile问题 首先引入依赖 新建feign的配置 在feign接口中配置 Feign传输MultipartFile的一些问题 File转MultipartFile feign传参MultipartFile问题 首先,feign服务之间的调用,传参默认的格式为:ContentType=application/x-www-form-urlencoded 以表单的形式传参的,而文件流的传参,需要form-data的ContentType,否则会报错的 首先引入依赖

  • Spring中事务几个常见的问题解决

    目录 前言 Spring如何处理事务 1.编程式事务,可以使用TransactionTemplate 2.声明式事务 Spring事务传播机制 Spring事务隔离级别 前言 首先,事务这个概念是数据库层面的,Spring只是基于数据库中的事务进行扩展,以及提供了一些能让程序员更新方便操作事务的方式 Spring如何处理事务 Spring中支持编程式事务和声明式事务管理两种方式 1.编程式事务,可以使用TransactionTemplate public class B { @Autowired

  • AJAX和JSP实现的基于WEB的文件上传的进度控制代码第1/2页

    1.引言 2.实现代码 2.1.服务器端代码 2.1.1. 文件上传状态类(FileUploadStatus) 2.1.2. 文件上传状态侦听类(FileUploadListener) 2.1.3. 后台服务类(BackGroundService) 2.1.4. 文件上传状态控制类(BeanControler) 2.2. 客户端代码 2.2.1. AjaxWrapper.js 2.2.2. fileUpload.html 2.2.3. result.jsp 2.2.4. fileUpload.c

随机推荐