元素值必须为常量表达式:excludeAutoConfiguration = {TokenWebSecurityConfig.class}解决报错

可以给我一个🆓的大拇哥吗?👍😚

在Spring Boot的测试注解@SpringBootTest中,excludeAutoConfiguration属性要求其值必须是常量表达式。这意味着你不能直接使用类名(如TokenWebSecurityConfig.class)作为参数,除非它是一个常量表达式。

要解决这个问题,可以使用以下两种方法:

方法1:使用字符串形式的类名

你可以将类名作为字符串传递给excludeAutoConfiguration属性。Spring Boot会自动将这些字符串转换为类。

@SpringBootTest(
    classes = {SecurityTestApplication.class, TestSecurityConfig.class},
    properties = {
        "spring.main.allow-bean-definition-overriding=true"
    },
    excludeAutoConfiguration = {
        "com.example.config.TokenWebSecurityConfig"  // 使用全限定类名
    }
)
全限定类名

是指包含包名的类名。它用于唯一标识一个类,避免类名冲突。
格式:包名.类名
包名:com.example
类名:User
全限定类名:com.example.User

为什么需要全限定类名?

在 Java 中,类名可以重复,但包名是唯一的。通过使用全限定类名,可以唯一标识一个类,避免类名冲突。

方法2:定义一个常量

如果你希望使用类名而不是字符串,你可以定义一个常量,然后将该常量传递给excludeAutoConfiguration

import com.example.config.TokenWebSecurityConfig;

public class TestConstants {
    public static final Class<?>[] EXCLUDED_AUTO_CONFIGURATIONS = {TokenWebSecurityConfig.class};
}

@SpringBootTest(
    classes = {SecurityTestApplication.class, TestSecurityConfig.class},
    properties = {
        "spring.main.allow-bean-definition-overriding=true"
    },
    excludeAutoConfiguration = TestConstants.EXCLUDED_AUTO_CONFIGURATIONS
)

总结

  • 方法1:使用字符串形式的全限定类名。
  • 方法2:定义一个常量数组,并将其传递给excludeAutoConfiguration

这两种方法都可以解决“元素值必须为常量表达式”的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值