После первоначальной борьбы с получением EntityManager
с использованием следующей установки я получил IllegalArgumentException: ResourceLoader must not be null
, который я не могу понять. spring-data-jpa 2.1.1.RELESE, JBoss EAP 7.1. Я что-то упускаю?
Caused by: java.lang.IllegalArgumentException: ResourceLoader must not be null
at org.springframework.util.Assert.notNull(Assert.java:115)
at org.springframework.core.io.support.ResourcePatternUtils.getResourcePatternResolver(ResourcePatternUtils.java:62)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.setResourceLoader(ClassPathScanningCandidateComponentProvider.java:265)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.<init>(ClassPathScanningCandidateComponentProvider.java:150)
at org.springframework.data.repository.config.CustomRepositoryImplementationDetector.findCandidateBeanDefinitions(CustomRepositoryImplementationDetector.java:122)
at org.springframework.data.repository.config.CustomRepositoryImplementationDetector.lambda$detectCustomImplementation$1(CustomRepositoryImplementationDetector.java:107)
at java.util.Optional.orElseGet(Optional.java:267)
at org.springframework.data.repository.config.CustomRepositoryImplementationDetector.detectCustomImplementation(CustomRepositoryImplementationDetector.java:107)
at org.springframework.data.repository.cdi.CdiRepositoryContext.getCustomImplementationClass(CdiRepositoryContext.java:143)
at org.springframework.data.repository.cdi.CdiRepositoryBean.getCustomImplementationBean(CdiRepositoryBean.java:457)
at org.springframework.data.repository.cdi.CdiRepositoryBean.getRepositoryFragments(CdiRepositoryBean.java:372)
at org.springframework.data.repository.cdi.CdiRepositoryBean.create(CdiRepositoryBean.java:344)
at org.springframework.data.jpa.repository.cdi.JpaRepositoryBean.create(JpaRepositoryBean.java:72)
at org.springframework.data.repository.cdi.CdiRepositoryBean.create(CdiRepositoryBean.java:216)
at org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96)
at org.jboss.weld.bean.ContextualInstanceStrategy$DefaultContextualInstanceStrategy.get(ContextualInstanceStrategy.java:100)
at org.jboss.weld.bean.ContextualInstance.get(ContextualInstance.java:50)
at org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:99)
at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:99)
at au.com.cba.reporting.db.JpaRepository$ReportingParameterRepository$845402535$Proxy$_$$_WeldClientProxy.findAll(Unknown Source)
at au.com.cba.reporting.ReportingBean.findAll(ReportingBean.java:25)
...
beans.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode = "all"/>
Cdi Config
@ApplicationScoped
public class CdiConfig {
@Produces
@Dependent
@PersistenceContext(unitName = "jdbc-tx")
private EntityManager entityManager;
}
persistence.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<persistence version = "2.0" 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">
<persistence-unit name = "jdbc-tx" transaction-type = "JTA">
<jta-data-source>java:/JDBC_TX_DATASOURCE</jta-data-source>
</persistence-unit>
</persistence>
Я не знал, что вы можете внедрить компонент CDI в компонент Spring
@Kukeltje OP не использует Spring (фреймворк DI), просто Spring Data JPA напрямую с CDI, который поддерживается проектом Spring (что здорово!)
Хорошо, приятно знать (не очень ;-)). Сам использую deltaspike data / jpa и универсальность
@Dhiren нет, это еще не метод расширения JpaRepository интерфейса. Нет необязательного где-нибудь рядом
Проблема была вызвана несоответствием версии зависимости. Все библиотеки Spring, извлеченные транзитивно, были версии 5.1.1.RELEASE, только spring-core по какой-то причине была 4.2.5.RELEASE.
Разобрались, введя управление зависимостями для задействованных библиотек и согласовав их все с 5.1.1.RELEASE.
Можете ли вы проверить в своем собственном репозитории какой-нибудь метод с необязательным классом. Может быть, это причина проблемы.