我有两个项目。一个是DAL项目,它使用spring的neo4j API对neo4j数据库执行CRUD操作。这个项目被打包为一个jar并包含在项目#2中。Project#2是spring的一个restful服务项目,它使用spring boot打包并创建一个可执行的jar,在嵌入式tomcat服务器上执行符文。
当尝试运行spring boot为我创建的可执行jar时,我不断得到这个异常。应至少有1个bean可以作为此依赖项的自动候选项。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
根据我的阅读,如果我使用@ComponentScan,我可以给出注释目录来查看。所以我给了它我的服务项目的基本目录。我给了它包含的dal.jar的基本目录,但仍然没有找到注释的样子。
摘自评论:
组件扫描声明
@ComponentScan({"com.foo.dal.*","com.foo.notification.*"})
堆栈跟踪:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pushCommandsController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.teradata.dal.example.PushRepository com.teradata.notification.rest.controller.PushCommandsController.repository; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.teradata.dal.example.PushRepository] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
更新:
基于@chrylis答案:对@componenetscan进行了更改
@ComponentScan({"com.teradata.notification","com.teradata.dal"})
运行到:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration' is defined
有关DAL项目和服务项目的更多详细信息:
DAL项目:
服务项目:
@componentscan
的参数是包名,这些字符串不是有效的包。从它们中删除.*
;spring会自动扫描子包。
我在试着理解这里的区别。我看到一个类已经用它们两个相同的包示例进行了注释: 我理解与API文档的区别,但想详细了解。这是否意味着扫描的任何内容都具有更广泛的wrt Spring上下文可见性,而则没有。如果是这样的话,在中使用一些属性就足以满足在JPA上下文中绑定的需要了,不是吗?
我有两个jar(比如A.jar和B.jar),其中包含一些文件。我想创建第三个jar(比如c.jar),它只包含B.jar中的文件,而不包含A.jar中的文件。是否有用于执行此操作的java API。 谢谢
我有一个java类来处理XLS文件,并使用apache poi jar(poi-ooxml-3.8-20120326.jar)来完成。我最近还部署了BIRT jar来生成一些报告。接下来,当我调用java类进行XLS处理时,得到以下错误。 我发现'WorkbookFactory'类也在BIRT相关的jar(org.eclipse.birt.runtime_4.2.1.v20120918-1113.
我有一个带有myapp-core和myapp-web模块的myapp父pom类型maven项目。myapp-core模块作为依赖项添加到MyApp-Web。 myapp-core模块中的所有类都位于根包com.myapp.core中,而myapp-web模块中的所有类都位于根包com.myapp.web中 主要的application.java也在com.myapp.web包中。由于我的核心模块根
假设我有2个实体类,User和post。 波纹管示例
我的Gradle构建作业在构建/库文件夹下创建两个JAR文件(带有更改的VERSION占位符): 只有fo-VERSION-all.jar表示要上传到CloudFoundry实例的工件 我的问题是,这两个JAR文件都被上传到CloudFoundry实例,导致错误消息,如 没有容器可以运行此应用程序。请确保使用-p命令行参数或路径清单条目推送了一个或多个有效的JVM工件。 好的,-p CLI参数是一