java - 错误创建名为“ModelAccess”的 bean 自动装配依赖注入失败;无法自动装配字段
问题描述
这是我的项目的结构:
scr/main/java/com/company/configuration
scr/main/java/com/company/controller
scr/main/java/com/company/myProject
scr/main/java/com/company/exception
在配置中,我有 3 个类:ProjectInitializer、ProjectConfiguration 和 ProjectContextListener。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.company"})
@EnableJpaRepositories("com.company")
public class ProjectConfiguration {
}
==================================================== =======================
public class ProjectInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { ProjectConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new ProjectContextListener());
}
}
==================================================== ===================
公共类 ProjectContextListener 实现 ServletContextListener {
public void contextInitialized(ServletContextEvent servletContextEvent) {
Security.addProvider(new BouncyCastleProvider());
Security.addProvider(new FlexiCoreProvider());
Security.addProvider(new FlexiECProvider());
javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String s, SSLSession sslSession) {
return true;
}
});
}
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("Shutting down!");
}
}
==================================================== =====================
我想在 myproject 包中连接到 oracle 数据库。它包含一些类,问题在于 ModelAccess 类:
@Service
public class ModelAccess {
@Autowired
ProjectRepository jpaRepository;
protected JpaRepository<ProjectEnt, Long> getJpaRepository() {
return jpaRepository;
}
}
==================================================== ===========================
@Transactional
public interface ProjectRepository extends
JpaRepository<ProfileEnt, Long>,IProjectRepository{
}
==================================================== ===========================
@Repository
public interface IProjectRepository extends IGenericRepository<ProfileEnt> {
}
==================================================== ================
这是我在 tomcat 中部署项目时的堆栈跟踪:
创建名为“ModelAccess”的 bean 时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:com.company.myproject.impl.ProjectRepository com.company.myProject.impl.ModelAccess.jpaRepository;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有为依赖找到 [com.company.myproject.impl.ProjectRepository] 类型的合格 bean:预计至少有 1 个 bean 有资格作为此依赖的自动装配候选者。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}
==================================================== ==========================这是我的pom文件的一部分:
<properties>
<springframework.version>4.2.0.RELEASE</springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.11.11.RELEASE</version>
<!--<version>2.0.8.RELEASE</version>-->
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>commons-discovery</groupId>
<artifactId>commons-discovery</artifactId>
<version>0.4</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.8.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.8.Final</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0</version>
</dependency>
解决方案
IProjectRepository
不是一个问题JpaRepository
。而且,看起来你不需要它。要修复它,只需删除IProjectRepository
并ProjectRepository
改用。
推荐阅读
- python - 无法为此格式设置 strptime 格式 2018-07-26 12:52:18.679605-07:53
- php - Laravel 集合查询结果
- c# - Python中的指针拆箱
- html - 停止位置绝对子项占用父项的宽度
- python - Python:将txt文件加载到不同类型的二维列表中
- javascript - 在 Phaser 中检测精灵和位图之间的碰撞
- spring - 无法使用 mvn spring-boot:run 启动组件 Tomcat
- python - Interpolate a 3D array in Python
- eclipse-rcp - 工具栏位置
- php - 使用 foreach 循环添加每列的总和并在表格底部显示每个总计