-
Notifications
You must be signed in to change notification settings - Fork 2
Tag 28 Generic ReactRoutingForwarding Datetime
junesdream edited this page Apr 18, 2023
·
1 revision
- Generic
- z.B Listen sind generische Klassen
- Sie können Elemente jedes Datentyps aufnehmen
- Generics ermöglichen die Erstellung von Listen mit verschiedenen Datentypen wie Strings, Integer oder benutzerdefinierten Objekten
- Dies erhöht die Flexibilität und Wiederverwendbarkeit des Codes
- In den spitzen Klammern <> wird der Name des Datentyps als Generic angegeben
- Der Name steht als Platzhalter für den tatsächlichen Datentyp, z.B. "< T >" ist ein Beispiel für einen Generischen Typname, wobei "T" für einen beliebigen Datentyp wie String oder Integer steht. Es ist jedoch möglich, andere Buchstaben als Platzhalter zu verwenden, solange keine Umlaute verwendet werden.
- Bei der Verwendung von Generics in einem Konstruktor wird der Typ als Parameter mit einem Buchstaben angegeben. Setter- und Getter-Methoden können ebenfalls den generischen Typ verwenden.
- Mit der Elternklasse super> und Vererbung kann eine Kinderklasse ? super L von einer Vaterklasse erstellt werden. extends L definiert eine Kindklasse, die von der generischen Klasse L erbt
- ReactRoutingForwarding
`import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.resource.PathResourceResolver;
import java.io.IOException;
@Configuration public class ReactRoutingForwarding implements WebMvcConfigurer {
public static final String DEFAULT_STARTING_PAGE = "static/index.html";
static class ReactRoutingPathResourceResolver extends PathResourceResolver {
@Override
protected Resource getResource(String resourcePath, Resource location) throws IOException {
var requestedResource = location.createRelative(resourcePath);
// Is this a request to a real file?
if (requestedResource.exists() && requestedResource.isReadable()) {
return requestedResource;
}
// It seems to be only a frontend-routing request (Single-Page-Application).
return new ClassPathResource(DEFAULT_STARTING_PAGE);
}
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations("classpath:/static/")
.resourceChain(true)
.addResolver(new ReactRoutingPathResourceResolver());
}
} `
- Eine Annotation @Configuration wird in der Klasse angegeben, so dass die Klasse als Konfigurationsklasse verwendet werden soll.