У меня есть такой интерфейс:
public interface Animal {
void setName(String animal);
String getName();
}
, и у меня есть класс, который реализует интерфейс:
@Component
public class Dog implements Animal {
private String name;
public void setName(String name) {
this.name= name;
}
public String getName() {
return this.name;
}
}
В другом классе (ProcessAnimal), я AutoWire интерфейс:
public class ProcessAnimal {
@Autowired
public Animal animal;
public void processAnimals() {
animal.setName("Fido");
}
}
У меня есть только один класс, который реализует Animal
, поэтому это должно работать, однако я получаю NullPointerException
, когда он попадает в строку animal.setName("Fido");
. IntelliJ жалуется, что Autowired members must be defined in valid Spring bean (@Component|@Service...)
, который у меня есть ... Я не понимаю, что я делаю неправильно. Я пытался добавить @Qualifier
, но все равно он не работал и не должен был быть необходим, поскольку у меня есть только одна реализация.
-java
-com.example.com.AnimalProcessing
-Animal
-Animal.java
-Dog.java
-ProcessAnimal.java
-AnimalProcessingApplication.java
AnimalProcessingApplication. java
@SpringBootApplication
public class AnimalProcessingApplication {
public static void main(String[] args) {
SpringApplication.run(AnimalProcessingApplication.class, args);
run();
}
public static void run() {
ProcessAnimal processAnimal = new ProcessAnimal();
processAnimal.processAnimals();
}
}