Ich habe bisher die ganzen Java EE / Spring Dinge mit Java 8 machen dürfen, aber ich habe jetzt ein kleines Projekt für mich selbst gestartet und da greife ich auf Java 17 zurück.
Also ganz einfacher Aufbau: Eine Entity, ein Repository Interface, das von CrudRepository erbt, Unit Test.... halt wirklich alles ganz 08/15.
Nur eben renne ich immer in den Fehler: "org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'xxxx' available.
Sobald ich die module-info.java heraus nehme, läuft es problemlos. Mit module-info.java kommt es zu diesem Fehler. Teilweise gab es Meldungen dass eine Spring Klasse in einem unnamed Modul war - das habe ich alle bereinigt, indem ich das notwendige Modul ebenfalls per requires eingebunden habe.
Alle meine Namespaces gebe ich mit exports und opens an.
Und irgendwie komme ich da nicht wirklich weiter. Man findet viel a.la @Repository hinzufügen (was nicht notwendig ist, denn es reicht, von CrudRepository abzuleiten) und wie gesagt: alles 08/15 und funktioniert problemlos, wenn die module-info.java gelöscht wird. Der große Unterschied dabei ist ja, dass bei dem unnamed modul ein requires auf alle Module im Classpath gesetzt ist. Somit wird da irgendwas fehlen, aber ich habe da mit meinen Versuchen nicht wirklich was erreicht.
Meine aktuelle module-info.java:
Repository (noch mit @Repository) wäre einfach:
Die Abhängigkeiten sind die üblichen Verdächtigen (spring.boot.version ist 2.7.0:
Vielleicht hat ja jemand eine Idee, denn mir gehen gerade die Ideen aus ...
Also ganz einfacher Aufbau: Eine Entity, ein Repository Interface, das von CrudRepository erbt, Unit Test.... halt wirklich alles ganz 08/15.
Nur eben renne ich immer in den Fehler: "org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'xxxx' available.
Sobald ich die module-info.java heraus nehme, läuft es problemlos. Mit module-info.java kommt es zu diesem Fehler. Teilweise gab es Meldungen dass eine Spring Klasse in einem unnamed Modul war - das habe ich alle bereinigt, indem ich das notwendige Modul ebenfalls per requires eingebunden habe.
Alle meine Namespaces gebe ich mit exports und opens an.
Und irgendwie komme ich da nicht wirklich weiter. Man findet viel a.la @Repository hinzufügen (was nicht notwendig ist, denn es reicht, von CrudRepository abzuleiten) und wie gesagt: alles 08/15 und funktioniert problemlos, wenn die module-info.java gelöscht wird. Der große Unterschied dabei ist ja, dass bei dem unnamed modul ein requires auf alle Module im Classpath gesetzt ist. Somit wird da irgendwas fehlen, aber ich habe da mit meinen Versuchen nicht wirklich was erreicht.
Meine aktuelle module-info.java:
Code:
module test.server {
requires java.annotation;
requires java.persistence;
requires lombok;
requires org.slf4j;
requires spring.beans;
requires spring.boot;
requires spring.boot.autoconfigure;
requires spring.context;
requires spring.core;
requires spring.data.commons;
requires spring.data.jpa;
requires spring.web;
exports de.kneitzel.server;
opens de.kneitzel.server;
exports de.kneitzel.server.entities;
opens de.kneitzel.server.entities;
exports de.kneitzel.server.repositories;
opens de.kneitzel.server.repositories;
}
Repository (noch mit @Repository) wäre einfach:
Java:
package de.kneitzel.server.repositories;
import de.kneitzel.server.entities.TestEntity;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import java.util.Optional;
/**
* Repository to load and save ObjectAttributes instances.
*/
@Repository
public interface TestEntityRepository extends CrudRepository<TestEntity, Long> {
Optional<TestEntity> findById(long id);
}
Die Abhängigkeiten sind die üblichen Verdächtigen (spring.boot.version ist 2.7.0:
Code:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>${thymeleaf.security.version}</version>
</dependency>
Vielleicht hat ja jemand eine Idee, denn mir gehen gerade die Ideen aus ...