SlideShare una empresa de Scribd logo
1 de 52
Descargar para leer sin conexión
{
				curso:	"Spring	Boot	y	Angular",
				profesor:	"Adolfo",
				participantes:	[
								{	nombre:	"Asunción",	edad:	35	},
								{	nombre:	"Miguel",	edad:	31	},
								{	nombre:	"Miky",	edad:	27	},
								{	nombre:	"Alberto",	edad:	25	}
				]
}
interface	PersonaDao	{
				void	insertar(Persona	persona);
}
class	GestorPersonas	{
				private	PersonaDao	dao;
				//	Inyección	por	constructor
				public	GestorPersonas(PersonaDao	dao)	{
								this.dao	=	dao;
				}
				//	Inyección	por	setter
				public	setDao(PersonaDao	dao)	{
								this.dao	=	dao;
				}
				public	void	alta(Persona	persona)	{
								dao.insertar(persona);
				}
}
//	http://myhost.com/saludar/adolfo?edad=40
//	en	el	body	del	POST	{"apellido1":"sanz",	"apellido2":"diego"}
@Controller
public	class	SaludarController	{
				@ResponseBody
				@RequestMapping("saludar/{nombre}",	method=RequestMethod.POST)
				public	Saludo	saludar(@PathVariable("nombre")	String	nombre,
								@RequestParam("edad")	Integer	edad,	@RequestBody	Apellidos	a,
								@SessionAttribute	Login	login){
								Saludo	saludo	=	new	Saludo()
								saludo.setNombre(nombre);
								saludo.setApellidos(a.getApellido1(),	a.getApellido2());
								saludo.setEdad(edad);
								saludo.setLogin(login);
								return	saludo;
				}
}
//	http://myhost.com/saludar/adolfo?edad=40
//	en	el	body	del	POST	{"apellido1":"sanz",	"apellido2":"diego"}
@RestController
public	class	SaludarController	{
				@RequestMapping("saludar/{nombre}",	method=RequestMethod.POST)
				public	ResponseEntity<Saludo>	saludar(
								@PathVariable("nombre")	String	nombre,
								@RequestParam("edad")	String	edad,	@RequestBody	Apellidos	a,
								@SessionAttribute	Login	login){
								if	(login	==	null)	{
												return	new	ResponseEntity<Saludo>(HttpStatus.UNAUTHORIZED);
								}
								Saludo	saludo	=	new	Saludo(nombre,
												a.getApellido1(),	a.getApellido2(),	edad,	login);
								return	new	ResponseEntity<Saludo>(saludo);
				}
}
public	interface	EntityRepository	extends	JpaRepository<Entity,	Long>	{
				//	EntityRepository	tiene	ya	estos	métodos	por	heredar	de	JpaRepository
				Entity	save(Entity	entity);						
				Optional<TEntity>	findById(Long	primaryKey);	
				Iterable<TEntity>	findAll();															
				long	count();																								
				void	delete(Entity	entity);															
				boolean	existsById(Long	primaryKey);			
}
List<Person>	findByLastname(String	lastname);
List<Person>	findByEmailAndLastname(String	email,	String	lastname);
List<Person>	findDistinctByEmailOrLastname(String	email,	String	lastname);
List<Person>	findByLastnameLikeIgnoreCase(String	lastname);
List<Person>	findByLastnameOrderByFirstnameAsc(String	lastname);
List<Person>	findByLastnameOrderByFirstnameDesc(String	lastname);
@Query("from	Country	c	where	lower(c.name)	like	lower(:name)")
List<Country>	getByNameWithQuery(String	name);															
@Query("from	Country	c	where	lower(c.name)	like	lower(:name)")
Country	findByNameWithQuery(@Param("name")	String	name);
@Query("select	case	when	(count(c)	>	0)	then	true	else	false	end"
				+	"	from	Country	c	where	c.name	=	:name)")
boolean	exists(String	name);
Page<Person>	findByLastname(String	lastname,	Pageable	pageable);
@Transactional
int	deleteByName(String	name);
@Transactional
@Modifying
@Query("UPDATE	Country	set	creation	=	:creation)"
int	updateCreation(Calendar	creation);
@Override
protected	void	configure(HttpSecurity	http)	throws	Exception	{
				http
								.authorizeRequests()
												.antMatchers("/all/*").permitAll()
												.antMatchers("/**").access(
																"hasAnyRole('AGENTE_ESPECIAL','DIRECTOR')");
}
@Secured("ROLE_AGENTE_ESPECIAL,ROLE_DIRECTOR")
void	clasificar(Expediente	expediente);
@PreAuthorize("hasRole('ROLE_DIRECTOR')	"	+
				"or	#expediente.investigador	==	authentication.name")
void	desclasificar(Expediente	expediente);
@PostAuthorize("hasRole('ROLE_DIRECTOR')	"	+
				"or	returnObject.investigador	==	authentication.name")
Expediente	mostrar(Long	id);
@PostFilter("(hasRole('ROLE_AGENTE')	and	not	filterObject.clasificado)	"	+
				"or	(hasAnyRole('ROLE_AGENTE_ESPECIAL','ROLE_DIRECTOR')	"	+
				"and	not	filterObject.informe.contains(principal.username))")
List<Expediente>	listarTodos();
<project>
				...
				<parent>
								<groupId>org.springframework.boot</groupId>
								<artifactId>spring-boot-starter-parent</artifactId>
								<version>2.1.4.RELEASE</version>
				</parent>
				...
</project>
<project>
				...
				<dependencies>
								<dependency>
												<groupId>org.springframework.boot</groupId>
												<artifactId>spring-boot-starter-web</artifactId>
								</dependency>
				</dependencies>
				...
</project>
@SpringBootApplication
public	class	HolaMundoApplication	{
				...
}
@SpringBootApplication
public	class	HolaMundoApplication	{
				public	static	void	main(String[]	args)	{
								SpringApplication.run(HolaMundoApplication.class,	args);
				}
}
@RestController
public	class	HolaMundoController	{
				@RequestMapping("/")
				public	String	holaMundo()	{
								return	"¡Hola	Mundo!";
				}
}
mvn	spring-boot:run
mvn	package
java	-jar	nombre-del-jar.jar
Spring Boot
Spring Boot

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Spring Boot
Spring BootSpring Boot
Spring Boot
 
Java 8-streams-collectors-patterns
Java 8-streams-collectors-patternsJava 8-streams-collectors-patterns
Java 8-streams-collectors-patterns
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Angular Dependency Injection
Angular Dependency InjectionAngular Dependency Injection
Angular Dependency Injection
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Spring Boot Actuator
Spring Boot ActuatorSpring Boot Actuator
Spring Boot Actuator
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Angular directives and pipes
Angular directives and pipesAngular directives and pipes
Angular directives and pipes
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Techical Workflow for a Startup
Techical Workflow for a StartupTechical Workflow for a Startup
Techical Workflow for a Startup
 
Spring security oauth2
Spring security oauth2Spring security oauth2
Spring security oauth2
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot
Spring bootSpring boot
Spring boot
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Spring aop
Spring aopSpring aop
Spring aop
 

Más de Adolfo Sanz De Diego

De 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWKDe 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWKAdolfo Sanz De Diego
 
Desarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de EthereumDesarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de EthereumAdolfo Sanz De Diego
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterAdolfo Sanz De Diego
 
Codemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software LibreCodemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software LibreAdolfo Sanz De Diego
 
Open Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software LibreOpen Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software LibreAdolfo Sanz De Diego
 
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...Adolfo Sanz De Diego
 
¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?Adolfo Sanz De Diego
 
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hlNuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hlAdolfo Sanz De Diego
 

Más de Adolfo Sanz De Diego (20)

Redes
RedesRedes
Redes
 
Computación
ComputaciónComputación
Computación
 
Angular
AngularAngular
Angular
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Java 8
Java 8Java 8
Java 8
 
De 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWKDe 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWK
 
Desarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de EthereumDesarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
Codemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software LibreCodemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software Libre
 
Git, Github y Markdown
Git, Github y MarkdownGit, Github y Markdown
Git, Github y Markdown
 
Open Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software LibreOpen Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software Libre
 
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
 
¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?
 
Codemotion 2016 - Hackathones 101
Codemotion 2016 - Hackathones 101Codemotion 2016 - Hackathones 101
Codemotion 2016 - Hackathones 101
 
Hackeando el #psd2Hackathon
Hackeando el #psd2HackathonHackeando el #psd2Hackathon
Hackeando el #psd2Hackathon
 
Open Expo 2016 - Ética Hacker
Open Expo 2016 - Ética HackerOpen Expo 2016 - Ética Hacker
Open Expo 2016 - Ética Hacker
 
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hlNuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hl
 
T3chFest - 2016 - Ética Hacker
T3chFest - 2016 - Ética HackerT3chFest - 2016 - Ética Hacker
T3chFest - 2016 - Ética Hacker
 
Git, GitHub y Markdown
Git, GitHub y MarkdownGit, GitHub y Markdown
Git, GitHub y Markdown
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (15)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Spring Boot