英文:
REST API: org.springframework.beans.factory.UnsatisfiedDependencyException:
问题
我正在构建一个 REST API,但似乎无法摆脱 org.springframework.beans.factory.UnsatisfiedDependencyException 错误,我在代码中找不到问题所在。我将会欣赏对此的新的洞察力。
附言:在这里使用了 mongo DB。
首先,完整的错误信息如下:
2020-05-04 01:16:31.468  WARN 14412 
--- [           main] ConfigServletWebServerApplicationContext : 
在上下文初始化过程中遇到异常 - 正在取消刷新尝试:
org.springframework.beans.factory.UnsatisfiedDependencyException:
创建 bean 时出错,bean 名称为 'productController':
通过字段 'productService' 表达的不满足的依赖关系;
嵌套异常是 org.springframework.beans.factory.UnsatisfiedDependencyException:
创建 bean 时出错,bean 名称为 'productServiceImpl':
通过字段 'productRepo' 表达的不满足的依赖关系;
嵌套异常是 org.springframework.beans.factory.BeanCreationException:
创建 bean 时出错,bean 名称为 'productRepo':
初始化方法的调用失败;嵌套异常是 org.springframework.data.mapping.PropertyReferenceException:
找不到类型为 Product 的属性 id!
public class Product {
    @Id
    private int ProductId;
    
// 其他变量以及设置和获取方法 
@Repository
public interface ProductRepo extends MongoRepository<Product, String> {
   // 方法
}
public interface ProductService {
 // 方法
}
@Service
public class ProductServiceImpl implements ProductService {
    @Autowired
    private ProductRepo productRepo;
 
// 实现部分
}
英文:
I am building a REST API and can't seem to get rid of the org.springframework.beans.factory.UnsatisfiedDependencyException, I can't spot the issue in this. I will appreciate a fresh insight into this.
p.s: Using mongo DB for this
first off the full error
2020-05-04 01:16:31.468  WARN 14412 
--- [           main] ConfigServletWebServerApplicationContext : 
Exception encountered during context initialization - 
cancelling refresh attempt: 
org.springframework.beans.factory.UnsatisfiedDependencyException: 
Error creating bean with name 'productController': 
Unsatisfied dependency expressed through field 'productService'; 
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
 Error creating bean with name 'productServiceImpl':
 Unsatisfied dependency expressed through field 'productRepo'; 
nested exception is org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'productRepo': 
Invocation of init method failed; nested exception is org.springframework.data.mapping.PropertyReferenceException:
 No property id found for type Product!
public class Product {
    @Id
    private int ProductId;
    
// and other variables plus setters and getters 
@Repository
public interface ProductRepo extends MongoRepository<Product, String> {
   // methods
}
public interface ProductService {
 // methods
}
@Service
public class ProductServiceImpl implements ProductService {
    @Autowired
    private ProductRepo productRepo;
 
// implementations
}
答案1
得分: 2
尝试按照以下方式更改 Product 类:
@Entity
public class Product {
    @Id
    private String productId; // MongoRepository<Product, String>;
    // 方法
}
在 Product 类中,缺少 @Entity 注解,并且 productId 应该是一个 String,正如存储库中指定的一样。
或者,如果您想保持当前字段类型,可以更改为 extends MongoRepository<Product, Integer>。
无论如何,它们应该匹配。
英文:
Try changing the Product class as the following:
@Entity
public class Product {
    @Id
    private String productId; // MongoRepository<Product, String>
    // methods
}
In the Product class the @Entity annotation is missing and the productId should be a String, as specified in the repository.
Or change to extends MongoRepository<Product, Integer> if you want to keep the current field type.
In any case, they should match.
答案2
得分: 0
确保你的 Spring 应用程序知道你的类位于哪里。
使用 @ComponentScan(basePackages = "com.package")。
另外,如果你的产品类是希望持久化的,请使用 @Entity 进行标记,这样 Spring 就会知道它并且会将其创建为一个 Bean。
用 @Service 标记你的接口 ProductService,这样 Spring 就会知道它的存在。
英文:
Make You That Your Spring Application Knows Where Your Classes Resides.
Use @ComponentScan(basePackages = "com.package").
Moreover If Your Product Class Is Something That You Want to Persist Mark It With @Entity So Spring Knows about It And Creates A Bean Out Of it.
Mark Your interface ProductService with @service, So that Spring Knows About it.
答案3
得分: 0
UnsatisfiedDependencyException:
Repository.java这个页面中,类似于@respository注解的类作为返回类型为null,而在optinal的附近使用了default关键字。
这个方法对我有用。
英文:
Unsatisfieddependencyexception:
Repository.java this page like @respository annotation class below being return type null and near optinal <> using default keyword
This method working me.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论