springboot+dubbo在写单元测试的时候controller中的@Reference注解属性为null 5C

问题描述
项目中运用springboot+dubbo注解方式的配置开发,正常启动项目没有什么问题,但是当我在写单元测试的时候,发现@Reference标注的属性为null,导致调用空指针异常.

相关代码
待测试方法:

 @RestController
@RequestMapping("/api/user")
public class UserController {

    @Reference(version = "${dubbo.service.version}")
    private IUserService userService;

    @PostMapping(value="/login", produces="application/json;charset=UTF-8")
    public JsonApi login(String username, String password) {
        User search = new User();
        search.setUsername(username);
        User user = userService.selectUserBy(search);
        if (StringUtils.isEmpty(user)){
            search.setUsername(null);
            search.setEmail(username);
            user = userService.selectUserBy(search);
        }
        if (StringUtils.isEmpty(user)){
            throw new AuthorizeException(ErrorCode.USER_UNKNOWN_ACCOUNT);
        }
        return JsonApi.isOk()..data(user);
    }
}

测试方法:

 @RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringBootTest
public class UserControllerTest {

    private MockMvc mvc;

    @Before
    public void setUp() {
        mvc = MockMvcBuilders.standaloneSetup(new UserController()).build();
    }

    @Test
    public void login() throws Exception {
        RequestBuilder request = post("/api/user/login")
                .contentType(MediaType.APPLICATION_JSON)
                .param("username","test")
                .param("password","123456");
        String rs = mvc.perform(request)
                //.andDo(print())
                .andExpect(status().isOk())
                .andReturn()
                .getResponse()
                .getContentAsString();
        System.out.println(rs);
    }
}

在运行测试用例的时候,发现private IUserService userService为空

图片说明

网上都是说和springMvc集成的时候加载顺序会导致这个空指针异常,但是我的项目正常启动是可以访问的,就是在测试用例的时候回出现空,不知道什么原因.

是哪里的配置没有配置对吗?

2个回答

Dubbo的@Reference注解拿到的一个代理;
但@Reference生成的代理并不在Spring容器中

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
dubbo在controller中reference注解为空的问题深度解析
dubbo注解的使用使用非常简单,下面贴出关键部分//provider的配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
springboot集成dubbo,消费者在controller层调用接口,@Reference注解引入的service实例为null
springboot集成dubbo,无xml。消费者在controller层调用接口,@Reference注解引入的service实例为null。有人说是因为:rnspring 扫描的时候根本无法识别@Reference ,同一方面,dubbo的扫描也无法识别Spring @Controller ,所以两个扫描的顺序要排列好,如果先扫了controller,这时候把控制器都实例化好了,再扫dubbo的服务,就会出现空指针。rn解决方案:dubbo-provider.xml:提供者先扫描spring框架,完成spring部分的扫描,然后将为dubbo框架提供服务;消费者部分相反,先扫描dubbo服务,后扫描spring部分。或者把controller放到service包下面进行扫描。rn然而,并没有解决我的问题。请教大神,这个问题该如何解决?
dubbo 的@Reference注解在springboot里面无效的问题
今天在用springboot整合dubbo的时候,提供方可以完成dubbo连接暴露接口, 但是消费方缺报了异常: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dubboConsumerTest' defined in file [D:\hengling\HLCDN-...
Controller单元测试——springboot中使用
一,使用方法 很长一段时间的单元测试都只是针对service和dao层,对于controller接口的测试如果是get方法可以运行项目在浏览器中直接访问接口地址;如果是post方法就比较麻烦了,还要自己写个js来传输json数据,后来发现可以直接在单元测试中加上controller接口的测试,方便了很多。具体如下: Controller中的方法 requestMapping中使用name="/...
dubbo系列之@Reference注解
-
SpringBoot对Controller进行单元测试
SpringBoot对Controller进行单元测试 package com.bestrivenlf.cn.hyitshop; import com.bestrivenlf.cn.hyitshop.model.Order; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; impor...
springboot整合dubbo项目controller层报null解决方法
一、springboot整合dubbo项目:     1.springboot项目在整合dubbo项目:首先导入dubbo的依赖         &amp;lt;dependency&amp;gt;             &amp;lt;groupId&amp;gt;io.dubbo.springboot&amp;lt;/groupId&amp;gt;             &amp;lt;artifactId&amp;gt;spring-boot-s...
SpringBoot Controller中各个注解的使用(三)
Controller的使用@Controller处理http请求(整体页面刷新提交的处理注解)@RestControllerSpring4之后新加的注解,原来返回json需要@ResponseBody配合@Controller(ajax提交,一般返回json格式)@RequestMapping配置url映射Controller的url路径参数@PathVariable 获取url中的数据@Requ...
Springboot的Controller中常用注解(一)
@Controller和@RestController和@ResponseBody @Controller @Controller注解标注类的方法,return时会被视图处理器识别成静态文件的路径。默认为templates文件夹下。如return &quot;test/hello&quot;表示的是默认路径下的test文件夹中的名叫hello的文件,带上后缀名.html或btl等也可以识别。 @ResponseB...
springboot +mabits单元测试所需注解
springboot +mabits单元测试所需注解 //测试类所需注解,本人是直接项目的test包下测的,不涉及demo搭建,测试时遇到的坑,记录一下 @RunWith(SpringRunner.class) @SpringBootTest(classes =com.xxx…application.class) //我在直接使用 application.class时出现识别不了的情况,使用全名...
springboot引入dubbo后在controller中用Reference注入服务引用时null问题解决
在consumer.xml中增加dubbo的annotation扫描 &amp;lt;dubbo:annotation package=&quot;com.test.controller&quot; /&amp;gt; 在依赖文件中增加: &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.alibaba.spring&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;s...
dubbo体验之用户管理系统Controller单元测试
Dubbo是阿里巴巴推出的一款流行的RPC开发框架,利用Dubbo可以更加方便的实现远程业务中心的定义,以方便集群化项目的编写。 Dubbo的开发不单单是一个开发框架的问题,而是许多与之相对应的技术ZooKeeper 、Maven、Spring等
springBoot 写单元测试
springBoot 单元测试 首先需要引用test jar 推荐使用maven 管理项目 具体坐标如下: &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-boot-starter-test&amp;lt...
springboot整合dubbo 纯注解
springboot整合dubbo +zookeeper 纯注解小Demo,需要的小伙伴可以试试
关于springboot注入属性为null
昨天用ftp远程读取文件,想着ftp的一些参数要经常改变,所以把它们抽取到配置文件中用springboot来注入属性。然后在初始化ftp服务器时,我选择用构造方法来完成初始化操作,结果一直出现空指针异常。使用断点调试发现属性都没有被注入。我检查了下各种配置都没有出现问题,最终突然想到,构造方法的执行可能会在spring注入之前被执行。我自己做了个实验,成功验证了我这想法。最终我放弃了使用构造方法去...
SpringBoot框架中使用注解式Dubbo
SpringBoot框架中使用注解式Dubbo新建三个模块dubbo-demo-api 通用接口dubbo-demo-service 服务提供方dubbo-demo-web 服务消费方注解配置需要 2.5.7 及以上版本支持服务提供方Service注解暴露服务 import com.alibaba.dubbo.config.annotation.Service; @Co...
SpringBoot属性注解
大部分关于属性值处理都是JackSon注解 点击查看官网 分为 ①序列化生效 ②反序列化生效 ③序列化和反序列化都生效 序列化生效 @JsonInclude(JsonInclude.Include.NON_EMPTY) // 放在类名上面 则对此类全部属性起作用 序列化或往页面传值时起作用 JsonInclude.Include.ALWAYS 默认不生效 序列化 JsonInclud...
SpringBoot入门:SpringBoot注解的使用Controller注解的使用方法
可以参考的其他优秀文章:SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍
Springboot单元测试,使用mvc访问Controller
1.构建单元测试类步骤 对需要进行测试的类alt+enter,创建test类 在类上添加注解 @RunWith(SpringRunner.class)   //在spring环境中运行  在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境 @SpringBootTest(classes = Person...
dubbo系列之@Reference注解解析原理(五)
前言 上文中我们讲解了@Service注解的解析原理,了解到Dubbo默认支持两种方式进行解析,一种是通过springboot 自动配置来做的,另外一种是通过DubboComponentScan 注解来解析的,本文继续也是以DubboComponentScan 的方式来讲解的。 源码入口 com.alibaba.dubbo.config.spring.context.annotation.D...
Dubbo的Reference注解必须先启动provider的问题
目录 现象 看源码分析原因 注解Reference第一步:用Reference注解里的参数初始化ReferenceConfig 注解Reference第二步:从配置文件里获取参数,写入ReferenceConfig 注解Reference第三步:生成Consumer代理 解决方案 如果只想知道怎么解决,请翻到文章最后一句。 现象 当使用Dubbo的Reference注解时,...
Spring4.3整合dubbo纯注解配置以及解决dubbo中@Reference为null的问题
前言 环境为jdk1.8,maven 3.3.3 , tomcat 8,dubbo 2.5.3 接口 public interface IUserService { User selectUser(int id); } 注意User实体需要序列化实现Serializable接口。接口和实体抽出为公共jar包,供服务端和客户端使用。 服务端配置 实现类 package ...
DUBBO服务为null的情况
最近开发公司项目,遇到了dubbo服务为空的情况,现在把出现的情况做个简单的总结:dubbo为空会报空指针异常!    1.第一种情况:引用有误,也就是再注入dubbo服务的时候,使用@Reference注解的时候,引用的并不是ali的dubbo,所以一直引入的都是错误的。导致注入为null;    这种情况比较常见,因为粗心大意导致import 文件错误,只需要认真检查。就可以找出问题所在。  ...
@Autowired在Controller中不为null,在某处为null的原因
记录一下,我的原因是:比如在A类中注入为null,原因是A的调用方法错误的用了new A(),改为A也同样为注入方式,@Autowired A,A中的注入就不为null了 
SpringBoot——Controller层常用注解作用
在SpringMVC当中,提供了一个注解@Controller,以此标记一个类是Controller,然后结合@RequestMapping和@RequestParam等注解进行URL和Contronller方法之间的映射,这样可以使Controller被外界访问到   如下图程序,一个Controller类的结构如下,使用@Controller进行标记这是一个Controller @Co...
关于Spring中Controller的单元测试
第一次写对Controller的单元测试,在不了解的情况下被自己的无知给坑了,下面给出写法。 package com.alipay.marketingservice.action; import com.alibaba.fastjson.JSON; import com.alipay.marketingservice.util.ConstantManager; import com.a
SpringBoot @Cacheable注解的属性使用
cacheNames和value 指定缓存组件的名字,通过下面代码可以看出可以将返回结果放在哪个缓存中,可以通过数组的方式指定多个缓存 /** * Alias for {@link #cacheNames}. */ @AliasFor("cacheNames") String[] value() default {}; /** * Names of the caches in...
springboot使用@SpringBootTest注解进行单元测试
概述 @SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解。基本用法如下: 1.添加依赖: &amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xsi:schemaLocation...
Springboot 单元测试注解报错 或 注入失败
今天做单元测试遇到一个问题,报错信息如下: java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test at org.spr...
@Value注解值为null
在方法上加上注解@PostConstruct ,表明该方法会在bean初始化后调用
SSM中的controller中的注解
@RequestParam与@PathVariable的区别 在spring MVC中,两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,URL写法不同。 使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值 使用@PathVariable时,URL是这样的:http://host:port/path/...
controller注解
controller注解
遇到问题---java---@value注解为null
Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码。在xml文件中配置properties文件例如cas.authn.mongo.collection.name=crmUsercas.authn.mongo.db.host=mongodb://192.168.30.249:27017/testCrmcas.authn.mongo.attri
【JUnit实战】为应用程序Controller设计单元测试
在本章中,我们为一个简单但完整的应用程序controller创建了一个测试用例。测试用例并不是测试单个的组件,而是检验多个组例,如何一起工作。我们从一个可以用于任何类的简单测试用例开始.然后把新的测试逐个添加到测试用例中,直到所有初始的组件都被测试到。由于断言变得越来越复杂、因此我们通过Hamcrest匹配器找到了一种简化断言的方法。我们预期这个包会日益增长,所以我们为测试类创建了另一个源代码目录。
dubbo中关于@reference注解无法配置MethodConfig的解决方法
本文针对目前为止最新的dubbo版本2.6.2中存在的问题,ReferenceConfig中有一个List&amp;lt;MethodConfig&amp;gt; methods属性,但是@Reference注解里面并没有可以配置这个属性的地方(听dubbo的committer说下个版本会修复),以前写过一篇设置timeout属性的文章,可以通过parameters曲线救国,但是有些属性是不管用的,比如本次要说的...
基于注解、SpringBoot的Dubbo提供者消费者DEMO
基于注解、SpringBoot的Dubbo提供者消费者DEMO,下载下来直接可以跑。
springboot拦截器@resource注解注入为null解决方案
为什么@resource注入为null inteceptor在springcontext之前加载,注入必然是null 解决方案 加入注解@Bean @Configuration public class WebMVCInterceptor implements WebMvcConfigurer { @Override public void addInterceptor...
springboot以注解的形式集成dubbo
springboot以注解的形式集成dubbo,生产者、消费者、接口层分开
Springboot集成Dubbo(以注解形式)
Springboot 集成 Dubbo 网址 Dubbo 官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html Zookeeper 安装 单机安装,见官网 案例一 使用专用接口定义 项目总体结构如下 springboot-dubbo ----dubbo-api ----pom ----src ----main ...
Dubbo 服务调用返回的对象部分属性返回为null
最近在用dubbo的时候出现了一个问题就是 ‘部分的对象属性为null’ 通过dubbo进行序列化和反序列话的时候发现有部分的属性为null 笔者反复的试验 发现这是一个类似mybatis 的一个机制 ‘父存子取(假的只是简单记忆)’ 也就是说在序列话的时候我们的数据存在对象的父类中 但是在子类的对象属性为null 那么在反序列的时候子类的方法会覆盖上去 也就是说反序列的时候会拿到null ...
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法