gpt4 book ai didi

java - Spring Boot 找不到我的 Autowiring 类( Autowiring 成员必须在有效的 Spring bean 中定义)

转载 作者:行者123 更新时间:2023-12-01 19:37:46 24 4
gpt4 key购买 nike

我正在尝试在我的测试类中使用 Spring 的 Autowiring 注释来注入(inject)类的实例。

package com.mycom.mycust.processing.tasks.references;

public class ReferenceIdentifierTest {

@Autowired
private FormsDB formsDB;

@PostConstruct
@Test
public void testCreateTopLevelReferencesFrom() throws Exception {
ReferenceIdentifier referenceIdentifier = new ReferenceIdentifier(formsDB);
}
}

这是 FormsDB 类:

package com.mycom.mycust.mysql;

import org.springframework.stereotype.Component;
import java.sql.SQLException;

@Component
public class FormsDB extends KeyedDBTable<Form> {

public FormsDB(ConnectionFactory factory) throws SQLException {
super(factory.from("former", new FormsObjectMapper()));
}
}

这是 SpringBootApplication 类:

package com.mycom.mycust.processing;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan("com.mycom.mycust")
public class Processing implements CommandLineRunner {
// Code
}

当我运行测试时,formsDB 为空。由于我在测试函数上使用了 PostConstruct 注释,我认为由于找不到类,FormsDB 无法 Autowiring 。测试类中的 Autowired 注释还有一个 IntelliJ 警告:Autowired 成员必须在有效的 Spring bean (@Component|@Service...) 中定义。但我已将 Component 注释放在 FormsDB 类上方,并将路径 com.mycom.mycust 放在 中SpringBootApplication 的 ComponentScan 注解。所以我不明白为什么它找不到类(class)。

这里出了什么问题?

最佳答案

您的测试调用缺少一些重要的注释来使 Autowiring 工作:

@SpringBootTest
@RunWith(SpringRunner.class)
public class ReferenceIdentifierTest {

@Autowired
private FormsDB formsDB;

@Test
public void testCreateTopLevelReferencesFrom() throws Exception {
ReferenceIdentifier referenceIdentifier = new ReferenceIdentifier(formsDB);
}
}

您还可以删除在测试中没有意义的@PostConstruct。

关于java - Spring Boot 找不到我的 Autowiring 类( Autowiring 成员必须在有效的 Spring bean 中定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56739053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com