gpt4 book ai didi

java - Spring Boot 无法识别接口(interface)

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

我有一个像这样的界面:

public interface Animal {
void setName(String animal);
String getName();
}

我有一个实现该接口(interface)的类:

@Component
public class Dog implements Animal {
private String name;
public void setName(String name) {
this.name= name;
}

public String getName() {
return this.name;
}
}

在另一个类(ProcessAnimal)中,我自动连线接口(interface):

public class ProcessAnimal {
@Autowired
public Animal animal;

public void processAnimals() {
animal.setName("Fido");
}
}

我只有一个实现 Animal 的类,所以这应该可以工作,但是,当它命中 animal.setName("Fido"时,我得到一个 NullPointerException ); 行。 IntelliJ 提示 Autowired 成员必须在有效的 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();
}
}

最佳答案

AnimalProcessingApplication 类应该比所有其他类高一级。

此外您正在使用 new 来创建对象,而不是使用依赖注入(inject)( Autowiring )。

替换下面 -

ProcessAnimal processAnimal = new ProcessAnimal();

@Autowired
ProcessAnimal processAnimal;

还要确保 ProcessAnimal 是一个 bean,并且 Animal 使用 Autowiring 注入(inject)到此类中。

关于java - Spring Boot 无法识别接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60574931/

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