Hallo zusammen,
ich habe eine Spring Boot Applikation und scheitere beim Starten der App an folgender Exception:
Quellcode:
Korrespondierende UserDTO
Ich hatte dieses DTO auch mit @Component annotiert und @AllArgsConstructor entfernt (Also wie im Beispiel unten zu UserRequestDTO), ohne Erfolg. Interessanterweise funktioniert es mit einem anderen DTO in dem auch UserDTO liegt, problemlos:
In UserRequestDTO genügt die @Component-Annotation, ich benötige nichtmal eine Konfigurationsklasse. Ich hatte auch schon probiert die Annotation nur in UserDTO anzugeben, ebenso ohne Erfolg.
Projektstruktur:
com.test.api
├── configuration
│ ├── UserConfiguration.java
│
├── dto
│ ├── UserDTO.java
│ ├── UserRequestDTO.java
├── Application.java
Dependencies:
ich habe eine Spring Boot Applikation und scheitere beim Starten der App an folgender Exception:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method UserDTO in .configuration.UserConfiguration required a bean of type 'java.math.BigDecimal' that could not be found.
Action:
Consider defining a bean of type 'java.math.BigDecimal' in your configuration.
Quellcode:
Java:
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import java.math.BigDecimal;
@Configuration
public class UserConfiguration {
@Bean
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public UserDTO userDTO(BigDecimal value, String name){
return new UserDTO(value, name);
}
}
Korrespondierende UserDTO
Java:
import java.math.BigDecimal;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.lang.Nullable;
import javax.validation.constraints.NotNull;
@Data
@Builder
@AllArgsConstructor
public class UserDTO {
@NotNull
private BigDecimal value;
@NotNull
private String name;
Ich hatte dieses DTO auch mit @Component annotiert und @AllArgsConstructor entfernt (Also wie im Beispiel unten zu UserRequestDTO), ohne Erfolg. Interessanterweise funktioniert es mit einem anderen DTO in dem auch UserDTO liegt, problemlos:
Java:
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Builder;
import lombok.Data;
import org.springframework.stereotype.Component;
@Data
@Builder
@Component
public class UserRequestDTO {
@NotNull
private List<String> codes;
}
In UserRequestDTO genügt die @Component-Annotation, ich benötige nichtmal eine Konfigurationsklasse. Ich hatte auch schon probiert die Annotation nur in UserDTO anzugeben, ebenso ohne Erfolg.
Projektstruktur:
com.test.api
├── configuration
│ ├── UserConfiguration.java
│
├── dto
│ ├── UserDTO.java
│ ├── UserRequestDTO.java
├── Application.java
Dependencies:
Code:
plugins {
id 'org.springframework.boot' version '2.7.3'
id 'io.spring.dependency-management' version '1.0.13.RELEASE'
id 'java'
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.google.code.findbugs:jsr305:3.0.2'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation "io.springfox:springfox-boot-starter:3.0.0"
implementation 'javax.validation:validation-api:2.0.1.Final'
implementation "com.h2database:h2:1.4.200"
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}