- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 3 模块的 Maven 项目,模型、服务和 Web。在模型中,我定义了 JPARepositories 和我的@entity 类。我实际上在模型项目中有 2 个实体管理器和 2 个事务管理器,因此我可以连接到多个数据库(我不需要分布式事务)。
但是我在服务层注入(inject) JPARepository 时遇到错误。
No qualifying bean of type [com.mycompany.rd.repository.misf.ProjectRepository] 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), @org.springframework.beans.factory.annotation.Qualifier(value=projectRepository)}
在 web.xml 中我有这个:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/appContext-demo.xml,
classpath*:/appContext-services.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
appContext-demo.xml 位于 web 模块中,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<bean id="appInitializer" class="com.mycompany.rd.web.misf.demo.AppInitializer"
init-method="init"/>
</beans>
在我的服务模块中,appContext-services.xml 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.mycompany.rd.service"/>
<!-- Load app context for persistence from base-model project -->
<import resource="classpath*:/appContext-model.xml" />
在我的模型层中,我为 appContext-model.xml 设置了这个:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<context:annotation-config />
<import resource="persistence.xml" />
<context:component-scan base-package="com.mycompany.rd.model,com.mycompany.rd.repository" />
<bean id="grapsDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url"
value="jdbc:oracle:thin:@xxxx" />
<property name="username" value="xxx" />
<property name="password" value="xxx" />
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="grapsTM">
<property name="entityManagerFactory" ref="grapsEM" />
<qualifier value="graps" />
</bean>
<bean id="grapsEM"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="grapsDataSource" />
<property name="persistenceUnitName" value="graps-jpa" />
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
</bean>
<tx:annotation-driven transaction-manager="grapsTM" />
<bean id="xpDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="url" value="jdbc:sqlserver://xxxx;"/>
<property name="username" value="xxx"/>
<property name="password" value="xxx"/>
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="xpTM">
<property name="entityManagerFactory" ref="xpEM" />
<qualifier value="xp"/>
</bean>
<bean id="xpEM"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="xpDataSource" />
<property name="persistenceUnitName" value="xp-jpa" />
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
</bean>
<tx:annotation-driven transaction-manager="xpTM" />
<jpa:repositories base-package="com.mycompany.rd.repository.misf" entity-manager-factory-ref="xpEM" transaction-manager-ref="xpTM"/>
<jpa:repositories base-package="com.mycompany.rd.repository.graps" entity-manager-factory-ref="grapsEM" transaction-manager-ref="grapsTM" />
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
</beans>
我正在 appContext-model.xml 中导入 persistence.xml 文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="graps-jpa" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.mycompany.rd.model.graps.PrProject</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-database" value="Oracle"/>
<property name="eclipselink.ddl-generation" value="none"/>
<property name="eclipselink.weaving" value="static"/>
</properties>
</persistence-unit>
<persistence-unit name="xp-jpa" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>com.mycompany.rd.model.graps.PrProject</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="eclipselink.target-database" value="SQLServer"/>
<property name="eclipselink.ddl-generation" value="none"/>
<property name="eclipselink.weaving" value="static"/>
</properties>
</persistence-unit>
</persistence>
我的服务类引发错误是@Autowired,带有模型模块中的 JPARepository:
package com.mycompany.rd.service.misf;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.mycompany.rd.model.misf.Project;
import com.mycompany.rd.repository.misf.ProjectRepository;
@Service
public class ProjectService {
private static Logger logger = LoggerFactory.getLogger(ProjectService.class);
@Autowired @Qualifier("projectRepository")
private ProjectRepository projectRepository;
@Transactional(value="xp")
public Project saveProject(Project project) {
return projectRepository.save(project);
}
@Transactional(value="xp")
public void deleteProject(Long projectSK) {
logger.debug("Deleting project with id: " + projectSK);
Project deleted = projectRepository.findOne(projectSK);
if (deleted == null) {
logger.debug("No project found with id: " + projectSK);
} else {
projectRepository.delete(projectSK);
logger.debug("Project deleted with id: " + projectSK);
}
}
@Transactional(value="xp")
public Project getProjectByProjectSk(Long projectSK) {
return projectRepository.findOne(projectSK);
}
@Transactional(value="xp")
public List<Project> getAllProjects() {
return (List<Project>) projectRepository.findAll();
}
@Transactional(value="xp")
public Page<Project> getAllProjects(Pageable pageable) {
return projectRepository.findAll(pageable);
}
@Transactional(value="xp")
public List<Project> getProjectsByDisease(String disease) {
return projectRepository.findByDisease(disease);
}
}
我的模型模块中的存储库定义如下:
package com.mycompany.rd.repository.misf;
import java.util.List;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import com.mycompany.rd.model.misf.Project;
@Repository
public interface ProjectRepository extends PagingAndSortingRepository<Project, Long>{
@Query("select p from Project p where p.disease = :disease order by p.projectNm")
public List<Project> findByDisease(
@Param("disease") String disease);
public Page<Project> findAll(Pageable pageable);
}
快把我逼疯了。任何建议表示赞赏。
最佳答案
问题似乎是因为我将 persistence.xml 导入到 appContext.xml 文件中。我被告知的 persistence.xml 文件不是有效的 spring 配置文件。即它在我的实例中使用持久性 xlmns,我正在导入到 bean xmlns 文件中。
我现在正在这样做(感谢 SO!),而不是“导入资源”——而且我的 beans 现在似乎正在连接。
<bean id="pum"
class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
<property name="persistenceXmlLocations">
<list>
<value>classpath*:META-INF/persistence.xml</value>
</list>
</property>
</bean>
谢谢大家。
关于java - 多模块项目中 JPA 存储库的 @Autowire 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557906/
我最近在我的机器上安装了 cx_Oracle 模块,以便连接到远程 Oracle 数据库服务器。 (我身边没有 Oracle 客户端)。 Python:版本 2.7 x86 Oracle:版本 11.
我想从 python timeit 模块检查打印以下内容需要多少时间,如何打印, import timeit x = [x for x in range(10000)] timeit.timeit("
我盯着 vs 代码编辑器上的 java 脚本编码,当我尝试将外部模块包含到我的项目中时,代码编辑器提出了这样的建议 -->(文件是 CommonJS 模块;它可能会转换为 ES6 模块。 )..有什么
我有一个 Node 应用程序,我想在标准 ES6 模块格式中使用(即 "type": "module" in the package.json ,并始终使用 import 和 export)而不转译为
我正在学习将 BlueprintJS 合并到我的 React 网络应用程序中,并且在加载某些 CSS 模块时遇到了很多麻烦。 我已经安装了 npm install @blueprintjs/core和
我需要重构一堆具有这样的调用的文件 define(['module1','module2','module3' etc...], function(a, b, c etc...) { //bun
我是 Angular 的新手,正在学习各种教程(Codecademy、thinkster.io 等),并且已经看到了声明应用程序容器的两种方法。首先: var app = angular.module
我正在尝试将 OUnit 与 OCaml 一起使用。 单元代码源码(unit.ml)如下: open OUnit let empty_list = [] let list_a = [1;2;3] le
我在 Angular 1.x 应用程序中使用 webpack 和 ES6 模块。在我设置的 webpack.config 中: resolve: { alias: { 'angular':
internal/modules/cjs/loader.js:750 return process.dlopen(module, path.toNamespacedPath(filename));
在本教程中,您将借助示例了解 JavaScript 中的模块。 随着我们的程序变得越来越大,它可能包含许多行代码。您可以使用模块根据功能将代码分隔在单独的文件中,而不是将所有内容都放在一个文件
我想知道是否可以将此代码更改为仅调用 MyModule.RED 而不是 MyModule.COLORS.RED。我尝试将 mod 设置为变量来存储颜色,但似乎不起作用。难道是我方法不对? (funct
我有以下代码。它是一个 JavaScript 模块。 (function() { // Object var Cahootsy; Cahootsy = { hello:
关闭。这个问题是 opinion-based 。它目前不接受答案。 想要改进这个问题?更新问题,以便 editing this post 可以用事实和引文来回答它。 关闭 2 年前。 Improve
从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace)。所有的标准库都是模块。标
Ruby的模块非常类似类,除了: 模块不可以有实体 模块不可以有子类 模块由module...end定义. 实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看
我有一个脚本,它从 CLI 获取 3 个输入变量并将其分别插入到 3 个变量: GetOptions("old_path=s" => \$old_path, "var=s" =
我有一个简单的 python 包,其目录结构如下: wibble | |-----foo | |----ping.py | |-----bar | |----pong.py 简单的
这种语法会非常有用——这不起作用有什么原因吗?谢谢! module Foo = { let bar: string = "bar" }; let bar = Foo.bar; /* works *
我想运行一个命令: - name: install pip shell: "python {"changed": true, "cmd": "python <(curl https://boot
我是一名优秀的程序员,十分优秀!