如果我使用@EnableAutoConfiguration,IntelliJ 无法自动装配@ServiceActivator 方法中的参数
IntelliJ cannot autowire the parameter in @ServiceActivator method if I use @EnableAutoConfiguration
启用自动配置后,我的 Spring 集成服务激活器在 IntelliJ 中给我一个错误:“无法自动装配。找不到 'String' 类型的 beans。”
如果我禁用自动配置,错误就会消失。
我可以从自动配置中排除 class 来“修复”这个问题吗?我怎么知道是哪个?
这是@ServiceActivator:
@Slf4j
@MessageEndpoint
public class StringProcessor {
@ServiceActivator(inputChannel = "channel1")
public void processString(String s) {
log.info(s);
}
}
IntelliJ error message
错误可以通过@EnableAutoConfiguration (@SpringBootApplication)注解切换:
//@SpringBootApplication
@ComponentScan
@Configuration
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如何确定这是 IntelliJ 误报、Spring 集成问题,还是我的判断有误? ;o)
那是 IntelliJ IDE误报和错误假设。
@ServiceActivator
的签名和结构从未设计用于注入。
当 channel1
中出现消息时,将在运行时调用此类方法。因此,端点激活该服务方法并将消息有效负载传递到该方法的 s
参数中。必要时进行相应的转换。 IDE.
中的 atuwiring 假设存在错误
在文档中查看有关服务激活器的更多信息:https://docs.spring.io/spring-integration/reference/html/messaging-endpoints.html#service-activator
这是误报,有人将此作为 JetBrains 的问题提出
https://youtrack.jetbrains.com/issue/IDEA-264916
您是否介意点击标题旁边的竖起大拇指,以便 Jetbrains 知道其他人希望此问题得到解决。
同时,您可以使用以下方法在方法级别禁用自省
@Slf4j
@MessageEndpoint
public class StringProcessor {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@ServiceActivator(inputChannel = "channel1")
public void processString(String s) {
log.info(s);
}
}
此类警告始终是来自 IDEA 的 'best guess',并且随着配置变得越来越复杂,特别是如果您引用在外部 jar 中创建的 bean,它会更频繁地发生。
它们不会停止编译或初始执行,但如果警告确实正确,Spring 本身将终止执行。
启用自动配置后,我的 Spring 集成服务激活器在 IntelliJ 中给我一个错误:“无法自动装配。找不到 'String' 类型的 beans。”
如果我禁用自动配置,错误就会消失。
我可以从自动配置中排除 class 来“修复”这个问题吗?我怎么知道是哪个?
这是@ServiceActivator:
@Slf4j
@MessageEndpoint
public class StringProcessor {
@ServiceActivator(inputChannel = "channel1")
public void processString(String s) {
log.info(s);
}
}
IntelliJ error message
错误可以通过@EnableAutoConfiguration (@SpringBootApplication)注解切换:
//@SpringBootApplication
@ComponentScan
@Configuration
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如何确定这是 IntelliJ 误报、Spring 集成问题,还是我的判断有误? ;o)
那是 IntelliJ IDE误报和错误假设。
@ServiceActivator
的签名和结构从未设计用于注入。
当 channel1
中出现消息时,将在运行时调用此类方法。因此,端点激活该服务方法并将消息有效负载传递到该方法的 s
参数中。必要时进行相应的转换。 IDE.
在文档中查看有关服务激活器的更多信息:https://docs.spring.io/spring-integration/reference/html/messaging-endpoints.html#service-activator
这是误报,有人将此作为 JetBrains 的问题提出
https://youtrack.jetbrains.com/issue/IDEA-264916
您是否介意点击标题旁边的竖起大拇指,以便 Jetbrains 知道其他人希望此问题得到解决。
同时,您可以使用以下方法在方法级别禁用自省
@Slf4j
@MessageEndpoint
public class StringProcessor {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@ServiceActivator(inputChannel = "channel1")
public void processString(String s) {
log.info(s);
}
}
此类警告始终是来自 IDEA 的 'best guess',并且随着配置变得越来越复杂,特别是如果您引用在外部 jar 中创建的 bean,它会更频繁地发生。
它们不会停止编译或初始执行,但如果警告确实正确,Spring 本身将终止执行。