SpringMVC 3.X: Controladores y Anotaciones

Desde la versión 2.5 Spring MVC cambio el comportamiento de sus controladores pasando a “preferir” el uso de anotaciones frente a los XML de mapeo.

En Spring 3.X se simplificó más aún el desarrollo con el framework.

Son importantes estas anotaciones:

@Controller

· Esta anotación aplica a la clase

· Sirve para registrarla en el Contexto de Spring (como @Component, @Service o @Repository)

@RequestMapping

· Se puede establecer a nivel de clase o de método

· Asocia una petición con una clase o método según sea el caso.

· Siempre debe llevar la URL,

También puede establecerse el método de la petición, y lo que genera

@RequestParam

· Anotación para los parámetros de un método

· Mapea un parámetro recibido desde nuestra Vista con un parámetro en el Controlador:

· Se puede indicar si es required o no

@PathVariable:

· Anotación para los parámetros de un método

· Cuando usamos scaffolding permite mapear una variable de la URL con un parámetro, como en:

@ModelAttribute

· Anotación para los parámetros de un método

· Permite mapear un Fomrulario (Model) desde mi Vista con el Bean que representa.

· Por ejemplo si mi JSP tiene:

Para editar Personas:

Mi controlador será: como este:

Validando JSON con JSON-Schema desde Java

En este post hablábamos sobre JSON Schema como mecanismo para validar JSON contra un esquema.

Veamos lo fácil que es hacerlo con Java:

1) Descargamos el proyecto json-schema-validator desde esta dirección: https://github.com/fge/json-schema-validator/archive/master.zip

Se trata de un proyecto Maven que podéis compilar con mvn install

2) Tengo un JSON como este:

3) Crearé el esquema JSON sobre el que validaré, que para mi JSON tiene este aspecto:

Definición para “SensorTemperatura”

“Definición de propiedades de “SensorTemperatura”

Definición de propiedades de “CoordenadaGps”

4) En mi proyecto Java importo dependencia de json-schema-validator y creo un Test para verificar que JSON es correcto:

5) Si cargo un JSON incorrecto me indicará donde está el problema, por ejemplo si no introduzco la propiedad temperatura: