Documentos de Académico
Documentos de Profesional
Documentos de Cultura
9. Crear una nueva clase Java denominada "Jug" en el paquete base. Dale a este un
campo id de tipo Long, y campos String para name, location (o las propiedades
que tu desees). Genera "getters and setters" para todos los campos. Guarda tu
trabajo.
10. Crea una nueva Controladora denominada "JugController". Anota esta con
@RestController.
@RequestMapping("/jugs")
public List<Jug> getJugs() {
List<Jug> list = new ArrayList<>();
return list;
}
12. Guarda todo tu trabajo. Detén la aplicación si ya está ejecutándose, e inicia este
nuevamente. Abre http://localhost:8080/jugs. Tu deberías obtener una respuesta
JSON con los datos de tus jugs.
13. Vuelve a la clase Jug. Agrega anotaciones JPA: La clase debe ser anotada con
@Entity, el id debe ser anotado con @Id y @GeneratedValue.
14. Crea una nueva Interface denominada "JugRepository". Haz que herede de
CrudRepository<Jug,Long>.
15. Abre la clase principal de la aplicación (aquella que esta anotada con
@SpringBootApplication). Usa @Autowired para inyectar una dependencia como
variable miembro de tipo JugRepository. Coloca el nombre de variable que tu
gustes (sugerencia: "jugRepository").
16. Agrega algo de lógica para poblar la base de datos: Agrega un método public
void init(). Anota este con @PostConstruct. Corta y pega el código para la
creación de jugs en este método, llama al método save() de tu repositorio.
También, elimina los IDs de los jugs. Código de ejemplo:
jugRepository.save(list);
}
@RequestMapping("/jugs")
public Iterable<Jug> getJugs() {
return jugRepository.findAll();
}
20. Regresar a el JugController y agrega un método que retorne un simple Jug dado
un ID.
19. Guarda todo tu trabajo. Deten la aplicación si ya se esta ejecutando, e inicia este
nuevamente. Usa http://localhost:8080/jugs para anotar los IDs generados para
cada Jug. Luego usa URLs
comohttp://localhost:8080/jugs/1 o http://localhost:8080/jugs/2 para obtener los
resultados de jugs solicitados.
20. Agregar una nueva clase denominada Member. Agrega campos para id, name, y
rol. El id debería ser Long, y otros campos pueden ser Strings. Genera getters /
setters para cada campo. Agrega una anotación @Entity en la clase, y
anotaciones @Id y @GeneratedValue en el id. Deberiás agregar un constructor
personalizado para poder crear objetos Member. (Si hacemo esto, aseguremosno
de tener tambien un constructor sin argumentos). Guarda tu trabajo.
21. Abre la clase Jug. Agrega un Set de objetos Member denominado members.
Genera getters y setters. Anota el set con
@OneToMany(cascade=CascadeType.ALL) y @JoinColumn(name="jugId").
Puedes crear un constructor para crear objetos Jug brindando name, location, y
Set de Members. (Si haces eso, asegurate de tener tambien un constructor sin
argumentos). Guarda tu trabajo.
@PostConstruct
public void init() {
List<Jug> list = new ArrayList<>();
jugRepository.save(list);
}
26. Crea una nueva Interface denominada "MemberRepository". Haz que herede de
CrudRepository<Member,Long>. (Asegurate de crear esto como una Interface,
no una Class)! Agrega una anotación @RestResource(path="members",
rel="member") a la interface.
29. Una de las dependencia que especificamos anteriormente fue Actuator. Este
automaticamente agregar algunos endpoints utiles para nuestra aplicacion web.
Abre lo siguiente con un navegador:
• /info
• /health
30. Observa que algunos endpoints nos son habilitados por defecto. Prueba los
siguientes - ellos no trabajan, pero, sería un buen ejercicio que averigues,
¿porque? - exponer estos puede significar un riesgo de seguridad:
• /beans
• /configprops
• /autoconfig
31. Habilita estos actuator endpoints modificando tu POM: Agrega una dependencia
para group org.springframework.boot y artifact spring-boot-starter-security.
Guarda tu trabajo y reinicia. Observa la salidad de la consola y localiza la frase
"default security password". Copia este password generador aleatoriamente,
luego busca los endpoints listados anteriormente y, usa "user" para username y
copia el valor anterior para el password. (Observa que este password es
regenerado con cada reinicio, establece security.user.name y
security.user.password para establecer valores estáticos).
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>