Table of Contents

Entorno de desarrollo

Se utilizará el Spring Tool Suite de la página oficial. Una vez instalado hay que crear un workspace para trabajar, y dentro de este, se creará un proyecto.

Preparación del código

Para descargar los componentes del proyecto de una manera rápida se acudirá a spring boot.

Los campos se informarán de la siguiente manera:

Base de datos

Se utilizará una base de datos de mysql. Para poder acceder hay que configurar el acceso mediante un fichero de propiedades en src\main\resources\application.properties con los datos de la conexión:

spring.datasource.url = jdbc:mysql://localhost:3306/secre
#spring.datasource.driverClassName = com.mysql.jdbc.Driver 
spring.datasource.username=root
spring.datasource.password=mysql

Código java acceso a la base de datos y representación en pantalla

Entity

Para el acceso a la base de datos hay que crear una entidad que será la encargada de recoger los datos de una tabla del modelo. Esto se hace creando el fichero Secrel_section.java (que es el nombre de la tabla) y se guarda en el directorio src/main/java/com/testSrping/demoArtifact/model.

Repositorios

Para permitir un Crud se definirá un CrudRepository que extiende el CrudRepository de Spring. Se guardará un SectionRepository en src/main/java/com/testSrping/demoArtifact/repository. El repositorio debe extender de JpaRepository<UserEntity, Integer>

Es posible exponer un repositorio como un servicio mediante la anotación @RepositoryRestResource(itemResourceRel=“user”, collectionResourceRel = “user”, path = “administrators”). Todos los métodos que tengan exposed = true pueden invocarse con el argumento de cada método. Es posible devolver una vista de los datos mediante las proyecciones. Únicamente las he hecho funcionar mediante compilación, no mediante invocación ?projection=p en la url

Hará falta sustituir la línea anterior por @RepositoryRestResource(itemResourceRel=“user”, collectionResourceRel = “user”, path = “administrators”, excerptProjection = UsersProjection.class)

Proyecciones

Es una visión diferente de lo que devuelve el repositorio. Se aplican a las entidades. En src/main/java/com/testSpring/demoArtifact/projection se define una interfaz con los métodos get de aquellos atributos a los que se quiere acceder y se declara la siguiente directiva @Projection(name = “editp”, types = UserEntity.class). Las proyecciones no pueden ser usadas en los controladores. Tan sólo se pueden usar en los repositorios

Servicios

Se crearán los servicios necesarios para su acceso, que se colocarán en src/main/java/com/testSrping/demoArtifact/service. Se creará una clase y su interfaz. Secrel_sectionService y ISecrel_sectionService. Los métodos del servicio utilizarán el repositorio que será inyectado por Spring

Controlador

Finalmente se creará un fichero controlador ubicado en src\main\java\com\testSpring\demoArtifact\controller. Aquí se mapearán con anotaciones las rutas a las que se quiere dar visibilidad desde la aplicación. Se mapea con la anotación @RequestMapping(“/user/{id}”). Será dentro de cada controlador donde se invocará el servicio que será inyectado por Spring y se devolverá mediante return new ResponseEntity<UserEntity>(u, HttpStatus.OK); Esto devuelve por el servidor web un json con el objeto respuesta

Ejecución de la aplicación

Desde el IDE de Spring es posible lanzar el servicio. Hay que pulsar, dentro del Boot Dashboard, el nombre de la aplicación en cuestión, en este caso demoArtifact. Una vez lanzado se pueden realizar invocaciones del estilo: http://localhost:8080/sections2


Tablas de auditoría

Para la auditoría se utiliza envers, que se configurará a través de Maven. http://www.baeldung.com/database-auditing-jpa

Configuración de la aplicación

Mediante la directiva @Configuration. Aquí se especificarán los mensajes de la aplicación escritos en ficheros de propiedades

Configuración del correo electrónico Se realiza mediante la directiva de configuración. Se lee directamente un fichero de propiedades y se carga en un objeto