首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Junit单元测试遇见一个枚举类型坑(枚举类型详解)

Enum简介 枚举类型很早就在计算机语言中存在了,主要被用来将一组相似的值包含进一种类型中,这种类型名称被定义成独一无二类型描述符,这就是枚举类型。...在java语言中,枚举类型是一个完整功能类,允许开发者给枚举类型添加方法和属性,同时也可以提供接口。...Enum原理 在使用enum创建枚举类型后,编译器会为其生成一个对应枚举类,这个类继承与java.lang.Enum。...由于values()方法是由编译器插入到枚举类中static方法,所以如果我们将枚举实例向上转型为Enum,那么values()方法将无法被调用,因为Enum类中并没有values()方法,valueOf...EnumSet和EnumMap EnumSet EnumSet是一个针对枚举类型高性能Set接口实现,但是在其中装入枚举类型必须是同类型,在EnumSet中通过bit-vector实现,也就是一个

1.5K50

Spring 容器 17 个常用注解总结

@Autowired默认按类型匹配方式,在容器查找匹配Bean,当有且仅有一个匹配Bean时,Spring将其注入@Autowired标注变量中。...,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)Bean,并自动注入到相应地方去。...2、Qualifier(指定注入Bean名称) 如果容器中有一个以上匹配Bean,则可以通过@Qualifier注解限定Bean名称,看下面的例子: 定义一个Car接口: package com.spring.service...,说一下@Resource装配顺序: @Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配 指定了name或者type则根据指定类型去匹配bean 指定了...初始化及销毁时顺序 @Primary:自动装配时当出现多个Bean候选者时,被注解为@PrimaryBean将作为首选者,否则将抛出异常 @Autowired:默认按类型装配,如果我们想使用按名称装配

71240
您找到你想要的搜索结果了吗?
是的
没有找到

你清楚这几个 Spring 常用注解吗?

@Autowired默认按类型匹配方式,在容器查找匹配Bean,当有且仅有一个匹配Bean时,Spring将其注入@Autowired标注变量中。...,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)Bean,并自动注入到相应地方去。...---- 2、Qualifier(指定注入Bean名称) 如果容器中有一个以上匹配Bean,则可以通过@Qualifier注解限定Bean名称,看下面的例子: 定义一个Car接口: package...,说一下@Resource装配顺序: @Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配 指定了name或者type则根据指定类型去匹配bean 指定了...初始化及销毁时顺序 @Primary:自动装配时当出现多个Bean候选者时,被注解为@PrimaryBean将作为首选者,否则将抛出异常 @Autowired:默认按类型装配,如果我们想使用按名称装配

55110

Spring实战——通过Java代码装配bean

上篇说是无需半行xml配置完成bean自动化注入。这篇仍然不要任何xml配置,通过Java代码也能达到同样效果。   这么说,是要把上篇料拿出来再煮一遍?...基于注解自动化注入固然优雅,但是它也有鞭长莫及时候,这时候就来看看Java代码如何装配bean。   ...xml中没有声明相应bean,也没有添加@ComponentScan启动自动扫描组件机制。   ...在执行这个方法时候,Spring会拦截所有对方法调用,当然这里会传入Spring注册好CompactDisc实例bean给cdPlayer方法来确保返回是创建好cdPlayerbean。...注意这里bean是单例,其实在xml中配置bean如果没有特殊声明,默认也是单例。也就是说即使这里创建了多个类似cdPlayer方法,得到仍然是同一个cdPlayerbean

1.4K50

1 Spring

(很多日志框架都是这个思想) 我们目前用 基本都是 Spring 5 版本 Spring优势 方便解耦,简化开发 AOP编程支持 声明式事务支持 方便程序测试(继承junit) 方便集成其他框架...读取xml 配置文件 根据xml 标识 获取Bean限定类名 通过反射创建Bean对象 返回对象 Spring 快速入门 引入 Spring核心Maven 仓库包 编写Dao接口 和实现类..."> id 不允许重复 class 全限定类名 (方便后期Spring帮我们创建对象) Bean对象 必须存在无参构造 scope : singleton 单例      Bean创建时间...、@Service、@Repository 来进行区分 image.png @Autowired注解 与 @Qualifiter注解 区别 都是注入 Bean 当使用类型注入,单个 @Autowired...即搭建好了环境,将来直接注入 就可调用方法 进行测试 步骤 导入Spring集成Junit 坐标 使用@RunWith注解 代替原来运行期 @ContextConfigration 指定配置文件 或配置类

18010

Spring、Spring Boot和TestNG测试指南 - 测试@Configuration

例子1:测试@Configuration 我们先写一个简单@Configuration: @Configuration public class FooConfiguration { @Bean...做测试,而JUnit特性是每次执行测试方法前,都会new一个测试类实例,而TestNG是在共享同一个测试类实例。...如果我们要测试这个Condition,那么就必须往Environment里添加相关property才可以,在这里我们测试了三种情况: 没有配置foo.create=true 配置foo.create=true...测试根本就是给它不一样条件,判断其行为是否正确,在这个例子里我们Condition比较简单,只是判断是否存在某个property,如果复杂Condition的话,测试思路也是一样。...(context, "foo.create=false"); 例子4:测试Configuration Properties Spring Boot还提供了类型安全Configuration Properties

1.1K20

Spring基础篇——自动化装配bean

bean并为我们创建了对象—— 1 package spring.test; 2 3 import org.junit.Test; 4 import org.junit.runner.RunWith...,但是上面的测试你会发现,通过XML注解方式能够测试成功,而Java注解方式却是失败测试会抛出NoSuchBeanDefinitionException异常,表示没有QQCar组件定义,也就是...自动装配歧义性    如果你足够细心,你会发现博主上面满足自动装配测试代码中,注入Car并没有采用多态写法,代码显得很低级。...你一定知道Spring容器管理每个bean都会有一个ID作为唯一标识,在上面的示例中,我们描述QQCar类为Spring组件时候并没有明确设置ID,但是Spring默认会将组件类类名首字母小写来作为...当然,我们还可以采用限定符注解,在使用@Autowired 完成自动装配时候限定只让某个bean作为自动注入bean—— 1 package spring.impl; 2 3 4 import

86570

SpringCloud升级之路2020.0.x版-8.理解 NamedContextFactory

本系列为之前系列整理重启版,随着项目的发展以及项目中使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!...还有就是,我们可能对于服务 A 通过注册中心进行发现,对于服务 B 则是通过 DNS 解析进行服务发现,所以对于不同微服务我们可能使用不同组件,在 Spring 中就是使用不同类型 Bean。...在我们测试代码中,首先,创建了一个 AnnotationConfigApplicationContext。...源码是: NamedContextFactory.java /** * 获取某个 name ApplicationContext 里面的某个类型 Bean * @param name 子 ApplicationContext...名称 * @param type 类型 * @param Bean 类型 * @return Bean */ public T getInstance(String name,

17420

Spring Cloud 升级之路 - 2020.0.x - 5. 理解 NamedContextFactory

还有就是,我们可能对于服务 A 通过注册中心进行发现,对于服务 B 则是通过 DNS 解析进行服务发现,所以对于不同微服务我们可能使用不同组件,在 Spring 中就是使用不同类型 Bean。...在我们测试代码中,首先,创建了一个 AnnotationConfigApplicationContext。...源码是: NamedContextFactory.java /** * 获取某个 name ApplicationContext 里面的某个类型 Bean * @param name 子 ApplicationContext...名称 * @param type 类型 * @param Bean 类型 * @return Bean */ public T getInstance(String name,...(name); try { //从对应 ApplicationContext 获取 Bean,如果不存在则会抛出 NoSuchBeanDefinitionException return context.getBean

22950

Spring Cloud 升级之路 - 2020.0.x - 5. 理解 NamedContextFactory

还有就是,我们可能对于服务 A 通过注册中心进行发现,对于服务 B 则是通过 DNS 解析进行服务发现,所以对于不同微服务我们可能使用不同组件,在 Spring 中就是使用不同类型 Bean。...在我们测试代码中,首先,创建了一个 AnnotationConfigApplicationContext。...源码是: NamedContextFactory.java /** * 获取某个 name ApplicationContext 里面的某个类型 Bean * @param name 子 ApplicationContext...名称 * @param type 类型 * @param Bean 类型 * @return Bean */ public T getInstance(String name, Class...); try { //从对应 ApplicationContext 获取 Bean,如果不存在则会抛出 NoSuchBeanDefinitionException return context.getBean

36120

spring基础(2:最小化XML配置)

一、自动装配 1、四种类型自动装配 类型 解释 xml配置 byName 根据Beanname或者id ByType...根据Bean类型自动装配 contructor 根据Bean构造器入参具有相同类型 同上 Autodetect...构造器 任意需要装配Bean方法 在使用@Autowired时有两种情况会出错:没有匹配Bean和存在多个匹配Bean,但是都有对应解决方法。...当没有匹配Bean时,自动装配会抛出NoSuchBeanDefinitionException,如果不想抛出可使用required属性,设置为false来配置可选自动装配,即装配失败就不进行装配,不会报错...当存在多个Bean满足装配条件时,Spring也会抛出NoSuchBeanDefinitionException错误,为了选择指定Bean,我们可以使用@Qualifier注解进行筛选: @Autowired

48520

mockito入门

前言 最近在项目中跑单元测试发现直接使用springboot自带测试,一整套跑起来花费数十分钟,这是无法忍受,考虑到功能特殊性,想到了Spring测试包自带mockito单元测试,所以进行初次尝试使用...springbean,如果不配置需要倒入bean会报依赖注入异常 默认情况需要手动配置相关需要注入bean类否则会报错,依赖注入异常,找不到相应bean Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException...exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of...总结 默认情况下需要手动配置相对应所有需要注入bean,凡是你这个模块需要倒入bean你都需要配置,如果你不配置注入就会报错,要么注入,要么mock,比如OrderB里面依赖了OrderA和一个静态...站在项目的角度,项目越大不可能为了某个功能跑一次服务,因为服务还有其他功能,所以功能测试就成了很好解决方案,你可以随意mock,返回想要值,最大角度覆盖所有测试,唯一缺点是,你需要考虑所有的依赖注入

27040
领券