spring - 尝试@Autowire @Component 的异常
问题描述
尝试自动装配组件时出现 NoSuchBeanDefinitionException
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.github.robertobatts.restapi.repository.OrderRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
这是我尝试自动装配的代码:
@CrossOrigin(origins = "*")
@RestController
@RequestMapping(value = "/order", produces = "application/json")
public class OrderController {
@Autowired
private OrderRepository repository;
...
}
这是组件:
@Component
public class OrderRepository extends InMemoryRepository<Order> {
@Override
protected void updateIfExists(Order original, Order updated) {
original.setDescription(updated.getDescription());
original.setCostInCents(updated.getCostInCents());
original.setComplete(updated.isComplete());
}
}
OrderRepository 使用的所有对象都是标准的 java 对象,没有 spring 注释。
以下是包的结构:
restapi
SpringBootApplication.java
controller
OrderController.java
repository
OrderRepository.java
解决方案
请将您的@SpringBootApplication
注释类一级包向上移动。
注释本身包含@ComponentScan
和...
如果未定义特定的包,则会从声明此注解的类的包中进行扫描。
这些更改34ced93
为我提供了预期的标准输出行,使用mvn clean spring-boot:run
.
diff --git a/src/main/java/com/github/robertobatts/restapi/main/RestApiExampleApplication.java b/src/main/java/com/github/robertobatts/restapi/RestApiExampleApplication.java
similarity index 86%
rename from src/main/java/com/github/robertobatts/restapi/main/RestApiExampleApplication.java
rename to src/main/java/com/github/robertobatts/restapi/RestApiExampleApplication.java
index bc01db5..affb928 100644
--- a/src/main/java/com/github/robertobatts/restapi/main/RestApiExampleApplication.java
+++ b/src/main/java/com/github/robertobatts/restapi/RestApiExampleApplication.java
@@ -1,3 +1,3 @@
-package com.github.robertobatts.restapi.main;
+package com.github.robertobatts.restapi;
import org.springframework.boot.SpringApplication;
diff --git a/src/main/java/com/github/robertobatts/restapi/repository/OrderRepository.java b/src/main/java/com/github/robertobatts/restapi/repository/OrderRepository.java
index b356e74..554610a 100644
--- a/src/main/java/com/github/robertobatts/restapi/repository/OrderRepository.java
+++ b/src/main/java/com/github/robertobatts/restapi/repository/OrderRepository.java
@@ -1,4 +1,6 @@
package com.github.robertobatts.restapi.repository;
+import javax.annotation.PostConstruct;
+
import org.springframework.stereotype.Repository;
@@ -8,4 +10,9 @@ import com.github.robertobatts.restapi.domain.Order;
public class OrderRepository extends InMemoryRepository<Order> {
+ @PostConstruct
+ private void test() {
+ System.out.println("OrderRepository ready.");
+ }
+
@Override
protected void updateIfExists(Order original, Order updated) {
推荐阅读
- xamarin.forms - 当 API 关闭时,Xamarin Forms Dependeny Injected HttpClient Timeout 不起作用
- python - 使用python或R测量条形图的高度
- reactjs - React - 将信息传递到组件中,呈现为 null
- javascript - 为什么我的 Vue JS 应用程序在 prod 服务器中崩溃但在 dev 中运行良好?
- cplex - 我不知道如何在 CPLEX 中编写 (i ∈ V^a∪ V^s) 以下条件?
- python - 最大区间交点
- inno-setup - 如何仅在向导参数内的 Inno Setup 中设置自定义 .cur 或 .ani 光标?
- python - Python正则表达式忽略字符串中单词的顺序
- typescript - 如何使用 Typescript 输入 Express 查询参数?
- javascript - 通过检查嵌套级别附加对象数组:Javascript