pom.xml
El fichero pom.xml se genera automáticamente al crear el proyecto (Creación y estructura de proyecto SpringBoot).
Con la configuración estándar no es necesario realizar ninguna modificación en el fichero pom.xml.
Sigue leyendo solo si necesitas saber cómo funciona.
A continuación se detallan aspectos relevantes de la configuración:
- Todas las APIs deben heredar del parent fundewebjs-api-parent.
Este parent fija las versiones y plugins a utilizar en las APIs. - Todas las APIs deben tener la dependencia fundewebjs-spring-boot-starter.
Esta dependencia importa el resto de librerías necesarias para trabajar con proyectos estándar.
Además, esta librería incluye funcionalidades comunes.
Ver la perspectiva Dependency Hierarchy del fichero pom.xml para localizar las librerías importadas. Disponible aquí Migración de APIs a Parent FundeWebJS#1.Ficheropom.xml. Todas las APIs deben incluir la dependencia bom de spring-boot-dependencies en la etiqueta <dependencyManagement>
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>OPCIONAL. Si fuera necesario añadir alguna dependencia de Spring-cloud que fundewebjs-spring-boot-starter no importa, SOLO SI NO LA IMPORTA, habrá que configurar la dependencia bom de Spring-cloud en <dependencyManagement> (junto a spring-boot-dependencies):
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Si se utiliza alguna dependencia opcional de fundewebjs, y no se ha añadido al generar el proyecto, vaya a la página de confluence de la librería correspondiente para ver cómo configurarla => Librerías Backend FundeWebJS.
application.properties
Dentro del fichero de application.properties NO se permiten caracteres especiales, ni en el fichero ni en los comentarios, como acentos, Ñ, etc. Esto causará que el proyecto no compile en local dando a un error
El fichero application.properties viene preconfigurado con todas las variables por defecto para trabajar en local.
Solo es necesario realizar las siguientes modificaciones sobre el fichero generado en la creación:
#### Ruta oauth #app.author= #app.apiname= .......... .......... #spring.datasource.url=jdbc:oracle:thin:@hydra-prescan.atica.um.es:1526/ZEUSDESA #spring.datasource.username= #spring.datasource.password= .......... ..........
Completar y descomentar las variables:
- app.author: será el nombre del grupo. Por ejemplo, "acade".
- app.apiname: el nombre del servicio. Por ejemplo, "resguardomatricula-api".
Estas dos forman la ruta base del servicio. Con estos ejemplos, sería /acade/resguardomatricula-api.
Además:
- spring.datasource.url: Cadena de conexión a BBDD. Por defecto contra ZEUSDESA.
- spring.datasource.username: Usuario de BBDD a utilizar en la aplicación.
- spring.datasource.password: Contraseña del usuario.
log4j2.xml
El fichero log4j2.xml se genera automáticamente y no es necesario modificarlo.
Este es un archivo de configuración para los logs, que vienen explicados más detalladamente en Logs en Spring Boot.
Clase inicial de la aplicación
En la clase que inicia la aplicación, que será algo como NombreApplication.java, sustituyendo Nombre por el de nuestra aplicación, tendremos que añadir a la notación SpringBootApplication el atributo scanBasePackages, con el contenido siguiente:
@SpringBootApplication( scanBasePackages = {
"es.um.atica.[PAQUETE_APPLICATION]", "es.um.atica.fundewebjs"
} )
Ahí, tenemos que cambiar aplicación por el paquete base de nuestra aplicación.
Con esto, un ejemplo de esta clase inicial podría ser el siguiente:
package es.um.atica.pruebaspose;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication ( scanBasePackages = {
"es.um.atica.[PAQUETE_APPLICATION]", "es.um.atica.fundewebjs"
} )
public class PruebasPoseApplication {
public static void main(String[] args) {
SpringApplication.run(PruebasPoseApplication.class, args);
}
}
Configuración CORS
Esta configuración, a partir de ahora, se realizará con la clase FundeWebJSCorsConfig de la librería fundewebjs-spring-boot-starter.
Si se quiere modificar la configuración por defecto, puede mantenerse en el proyecto y poner en el application.properties la propiedad: fdwjs.starter.cors.enable=false.
Configuración de seguridad
La configuración de seguridad estándar se realizará, a partir de ahora, en la clase FundeWebJSSecurityConfig incluida en la librería fundewebjs-spring-boot-starter.
Si se desea modificar la configuración estándar por que se validan otros paths, otros claims, se ha configurado el loa, se ha modificado el tratamiento de excepciones, etc., se recomienda crear un archivo SecurityConfig en base a FundeWebJSSecurityConfig y establecer en el application.properties (de local y del repo de Helm Chart), la property: fdwjs.starter.security.enable=false.
Si se desea securizar nuestra API con un nivel de seguridad LoA mínimo, diríjase a la página Configuración de seguridad LoA con Oauth.
Próximamente estára disponible una sección nueva en confluence con todas las funcionalidades para securizar endpoints.
Utilizar https en local: generar certificado autofirmado
En vez de generar un certificado nuevo, podemos utilizar los que vienen aquí: certs.rar
Contiene keystore.p12, que es el que utilizaremos en el backend, y los dos .pem para el frontend.
Añadir certificado a nuestra aplicación
En application.properties debemos descomentar las siguientes properties y añadir la ruta al key-store en nuestra máquina en la propiedad server.ssl.key-store:
# The format used for the keystore. It could be set to JKS in case it is a JKS file server.ssl.key-store-type=PKCS12 # The path to the keystore containing the certificate server.ssl.key-store=C:/certs/keystore.p12 # The password used to generate the keystore server.ssl.key-store-password=password # The password used to generate the certificate server.ssl.key-password=password # The alias mapped to the certificate server.ssl.key-alias=tomcat