首页 > 解决方案 > 错误创建名为“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>

标签: javaspringhibernatespring-data-jpa

解决方案


IProjectRepository不是一个问题JpaRepository。而且,看起来你不需要它。要修复它,只需删除IProjectRepositoryProjectRepository改用。


推荐阅读