Я пытаюсь использовать аннотацию Spring в autowire в моем тестовом классе, чтобы внедрить экземпляр класса.
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 не может быть автоматически подключен из-за отсутствия класса.Также имеется предупреждение IntelliJ для аннотации Autowired
в тестовом классе: Autowired members must be defined in valid Spring bean (@Component|@Service...)
.Но я поместил аннотацию Component
над классом FormsDB
, а также поместил путь com.mycom.mycust
в аннотацию ComponentScan
приложения SpringBootApplication.Поэтому я не понимаю, почему он не может найти класс.
Что здесь не так?