Spring Data JPA - Repositories werden nicht injected

shortys

Mitglied
Hallo zusammen,
ich habe das Problem, dass meine Entity-Repositories nicht injected werden.
Diese sind mit @Resource annotiert:

Java:
@Repository
public class BudgetService implements IBudgetService {

	@Resource
	private IAccountRepository accountRepository;

	@Resource
	private IEntryRepository entryRepository;

Beide Repositories sind JpaRepositories:

Java:
public interface IAccountRepository extends JpaRepository<Account, Long> {

	Account findByAccountNumber(String accountNumber);

}

Java:
public interface IEntryRepository extends JpaRepository<Entry, Long> {

}

Meine Konfiguration sieht wie folgt aus:

Java:
@Configuration
@ComponentScan(basePackages = "org.houseoffice.budget.model")
@ImportResource(value = "classpath:org/houseoffice/budget/config/spring-context.xml")
public class ApplicationConfig {

	@Bean
	public LocalContainerEntityManagerFactoryBean emf(final DataSource dataSource) {
		final LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
		emf.setDataSource(dataSource);
		emf.setJpaDialect(new HibernateJpaDialect());
		emf.setJpaVendorAdapter(jpaVendorAdapter());
		emf.setPersistenceUnitManager(null);
		emf.setPackagesToScan("org.houseoffice.budget.model.entities");
		return emf;
	}

	@Bean
	public JpaVendorAdapter jpaVendorAdapter() {
		final HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();
		jpaVendorAdapter.setShowSql(true);
		jpaVendorAdapter.setDatabase(Database.HSQL);
		jpaVendorAdapter.setGenerateDdl(true);
		return jpaVendorAdapter;
	}

	@Bean
	public JpaTransactionManager transactionManager(final EntityManagerFactory emf) {
		return new JpaTransactionManager(emf);
	}

}

Hier noch der importierte Spring-Context:

[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:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd Index of /schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd Index of /schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd">
<!-- HSQLDB Configuration -->
<bean id="embeddedDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:file:database/data" />
<property name="username" value="SA" />
<property name="password" value="" />
</bean>

<!-- Base packages for JpaRepositories -->
<jpa:repositories base-package="org.houseoffice.budget.model.repositories" />
</beans>
[/XML]

Kann mir vielleicht jemand weiterhelfen. Google hat das bisher leider nicht getan.
Ich wäre sehr dankbar.

Gruß
Patrick
 

Oliver Gierke

Mitglied
Soweit ich weiß injiziert @Resource by-name (siehe hier). Deine Repository-Instanzen heißen aber dank eures I-Präfix eben iAccountRepository. Ich vermute deshalb gibt es da keinen Match. Hast du mal @Autowired oder @Inject versucht?

Ein paar grundsätzliche Hinweise bzw. ein paar Fragen zum Setup noch:

1. Gibt es einen Grund warum du XML und JavaConfig verwendest? Repositories kannst du mit @EnableJpaRepositories aktivieren und die DataSource könntest du auch bequem als @Bean definieren. Bei einem Konfigurationsstil zu bleiben erhöht die Konsistenz und damit die Erschließbarkeit des Codes.
2. Sollte dein Service nicht mit @Service annotiert sein? Ich vermute @Repository an einem Service stiftet Verwirrung.
3. Wir empfehlen eigentlich immer auf JpaRepository zu verzichten und stattdessen PagingAndSortingRepository oder ein anderes Super-Interface zu verwenden um zu vermeiden, dass der Client persistenztechnologiespezifische Typen und Methoden zu sehen bekommt.

Gruß
Ollie
 
Zuletzt bearbeitet:

shortys

Mitglied
Erstmal vielen Dank Ollie!

Ich habe einen JUnit - Test der Funktioniert und das ergibt für mich leider keinen Sinn.
Java:
@ContextConfiguration(classes = { ApplicationConfig.class })
public class ApplicationConfigTest extends AbstractJUnit4SpringContextTests {

	@Resource
	private IAccountRepository accountRepository;
	@Resource
	private IEntryRepository entryRepository;

	@Test
	public void saveAndDeleteBook() {
		Assert.assertThat(this.accountRepository.findAll().isEmpty(), is(true));
		final Account account = new Account();
		account.setAccountNumber("testAccountNumber");
		this.accountRepository.save(account);
		Assert.assertThat(this.accountRepository.findAll().isEmpty(), is(false));
		Assert.assertThat(this.accountRepository.exists(account.getId()), is(true));
		this.accountRepository.delete(account);
		Assert.assertThat(this.accountRepository.findAll().isEmpty(), is(true));
	}

	@Test
	public void testBootstrap() {
		Assert.assertThat(this.accountRepository, is(notNullValue()));
	}

	@Test
	public void testEntries() {
		final Account account = new Account();
		account.setAccountNumber("testAccountNumber");

		final Entry entry = new Entry();
		entry.setValue(12.5);
		this.entryRepository.save(entry);

		account.getEntries().add(entry);
		this.accountRepository.save(account);

		final Entry secondEntry = new Entry();
		this.entryRepository.save(secondEntry);
		account.getEntries().add(secondEntry);
		Assert.assertThat(this.accountRepository.findByAccountNumber("testAccountNumber").getEntries().size(), is(1));
		this.accountRepository.save(account);
		Assert.assertThat(this.accountRepository.findByAccountNumber("testAccountNumber").getEntries().size(), is(2));
		this.accountRepository.delete(account);
		this.entryRepository.delete(entry);
		this.entryRepository.delete(secondEntry);
	}

	@Test
	public void testFindByAccountNumber() {
		final Account account = new Account();
		account.setAccountNumber("testAccountNumber");
		this.accountRepository.save(account);
		Assert.assertThat(this.accountRepository.findByAccountNumber("notExistingAccountNumber"), is(nullValue()));
		Assert.assertThat(this.accountRepository.findByAccountNumber("testAccountNumber"), is(equalTo(account)));
		this.accountRepository.delete(account);
	}

Zu deinen Hinweisen:
1. Der Grund is recht simple. Ich hab eines der Tutorials, die ich gefunden habe, umgesetzt ;)
2. Ah ja, das ist ein Versuch gewesen, da mich die @Service Annotation leider nicht weiter gebracht hat :/
3. Die einzige Methode, die nicht auch durch das CRUD-Repo zur Verfügung gestellt wird ist saveAndFlush(). Also da sehe ich nicht wirklich den Grund deswegen auf eine findAll-Methode zu verzichten die direkt eine List anstatt eines Iterable zurück gibt.

Gruß
Patrick
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
L Spring Data: Wie kann ich das Datenmodell richtig definieren? Frameworks - Spring, Play, Blade, Vaadin & Co 6
L Spring Data Einträge von User zahlen und auflisten Frameworks - Spring, Play, Blade, Vaadin & Co 7
S Spring Data Repository delete bulk Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Data: Hibernate liest nicht alle Ebenen Frameworks - Spring, Play, Blade, Vaadin & Co 5
L Spring Data: Detached Entity passed to persist Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 6
L Spring Data: Multiple representations of the same entity Frameworks - Spring, Play, Blade, Vaadin & Co 14
S Spring Data data.sql SQL Insert mit single quote Frameworks - Spring, Play, Blade, Vaadin & Co 4
S Spring Data Hibernate mehrfache Suchkriterien Frameworks - Spring, Play, Blade, Vaadin & Co 5
J Spring data JPA Query Frameworks - Spring, Play, Blade, Vaadin & Co 2
G Spring-Boot und Spring Data Programmstart zu langsam Frameworks - Spring, Play, Blade, Vaadin & Co 21
S Spring Data: Lazy Fetch mit Self-Join. Frameworks - Spring, Play, Blade, Vaadin & Co 1
X spring-data, mongodb und Mapping Frameworks - Spring, Play, Blade, Vaadin & Co 1
D spring data jpa: Wie kann man das Repository Interface in 2 Lese/Schreibe Interfaces aufteilen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
D [InvalidDataAccessApiUsageException] Spring Data JPA / Hibernate Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Anfänger benötigt Hilfe Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Date keine neue Tabelle fuer Attribut Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Spring Cloud : Resttemplate mit Loadballancer Frameworks - Spring, Play, Blade, Vaadin & Co 11
Dimax Spring resource not found Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Spring MongoDB unique index Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring App Probleme beim Ausführen auf dem Tomcat Server Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring WebFlux Cors konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Schöne View mit anchor scrolling in Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
Dimax Spring JPA Multiple Keys Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Was ist das Framework "Spring"? Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Unit/Integrations Testing Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
H Resource Liste Lazy Autowired Spring Context Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
krgewb Spring und GWT - & wird zu & amp; Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand JPA/Spring Repository Like Suche leeres Ergebnis Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
M Spring Initializer - Webservices Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Hateoas Frameworks - Spring, Play, Blade, Vaadin & Co 1

Ähnliche Java Themen

Neue Themen


Oben