Escolar Documentos
Profissional Documentos
Cultura Documentos
Qu es Spring Framework?
Es un marco de trabajo que se apoya en algunos estndares Java EE para el desarrollo de
aplicaciones y contenedor de inversin de control. Nos permite, entre otras cosas, crear
aplicaciones web, servicios REST, persistencia de bases de datos relacionales y no relacionales,
etc. En este post hablaremos de Spring MVC, el cual es un marco de trabajo que nos permite
crear aplicaciones web con la arquitectura MVC.
Supongamos que un cliente quiere saber el estado actual de sus movimientos bancarios.
1. Un editor de textos
2. Descargar e instalar Gradle
"""
jar {
baseName='principal'
manifest{
attributes 'Main-Class': 'com.codemonkey.Application'
}
}
repositories {
mavenCentral()
}
dependencies {
compile('org.springframework.boot:spring-boot-starter')
compile group: 'org.projectlombok', name: 'lombok', version: '1.16.16'
testCompile('org.springframework.boot:spring-boot-starter-test')
compile('org.springframework.boot:spring-boot-starter-mustache')
compile('org.springframework.boot:spring-boot-starter-web')
}
configurations.all {
resolutionStrategy.cacheDynamicVersionsFor 10, 'minutes'
}
//Ver dependencias
project.configurations.compile.resolvedConfiguration.resolvedArtifacts.each {
println ' [Dependencias] '
println 'artifact: '+it.name // << the artifact name
println 'referencia: '+it.file // << the file reference
println '**************************'
}
Ejemplo. Crearemos un servicio REST sencillo con las clases Usuario y Area.
Application.java
package com.codemonkey;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Usuario.java
package com.codemonkey.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Setter;
import lombok.Getter;
@Data
@AllArgsConstructor
public class Usuario{
@Getter @Setter private int id;
@Getter @Setter private String nombre_usuario;
@Getter @Setter private String password;
@Getter @Setter private boolean logeado;
@Getter @Setter private Area area;
}
Area.java
package com.codemonkey.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Setter;
import lombok.Getter;
@Data
@AllArgsConstructor
public class Area {
@Getter @Setter private int id;
@Getter @Setter private String responsable_area;
@Getter @Setter private int piso;
}
Como pueden notar nos ayudamos de Lombok para generar los getter y setter de ambas
clases.
ControllerUsuario.java
package com.codemonkey.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Date;
import com.codemonkey.model.Usuario;
import com.codemonkey.model.Area;
@RestController
@RequestMapping("/nodo")
public class ControllerUsuario {
//http://127.0.0.1:8080/nodo/usuarios
@RequestMapping("/usuarios")
public List<Usuario> getUsuarios(){
List<Usuario> listaUsuario = new ArrayList<Usuario>();
listaUsuario.add(new Usuario(1, "Sr.
Negativo", "1234", true, new Area(1, "sistemas",10)));
listaUsuario.add(new Usuario(2, "OscarRyz", "ryz123", false, new Area(2,
"informatica",12)));
listaUsuario.add(new Usuario(3, "Benek", "secreta", true, new Area(3, "ma
nager",9)));
return listaUsuario;
}
}
Construimos el proyecto:
$ gradle build
Ejecutamos:
$ gradle bootRun
Abrimos cualquier navegador en la siguiente direccin:
http://127.0.0.1:8080/nodo/usuarios
Cabecera de la respuesta
Content-Type application/json;charset=UTF-8
Date Sun, 13 Aug 2017 02:19:22 GMT
Transfer-Encoding chunked
Cabeceras de la peticin
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
Host 127.0.0.1:8080
Upgrade-Insecure-Requests 1
User-Agent Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0
Datos obtenidos:
[{"id":1,"nombre_usuario":"Sr.
Negativo","password":"1234","logeado":true,"area":{"id":1,"responsable_area":"sistemas","piso
":10}
},
{"id":2,"nombre_usuario":"OscarRyz","password":"ryz123","logeado":false,"area":{"id":2,"respo
nsable_area":"informatica","piso":12}
},
{"id":3,"nombre_usuario":"Benek","password":"secreta","logeado":true,"area":{"id":3,"responsa
ble_area":"manager","piso":9}}
]
Nota: Firefox muestra mejor esos datos.
Link: http://www.javamexico.org/blogs/sr_negativo/spring_framework_spring_mvc