Creo que tanto el titulo como el video quedaron mal, no es la anotación @Valid sino la anotación @Value 😃
Introducción a Spring Boot
¿Qué es Spring Boot?
Características principales de Spring Boot
Instalación de entorno de desarrollo: Windows
Instalación de entorno de desarrollo: macOS
Instalación de entorno de desarrollo: Ubuntu
Dependencias en Spring Boot
¿Qué es una dependencia?
Inversión de control y el patrón de inyección de dependencias
Autoconfiguration y runtime
Anotaciones para indicar dependencias en Spring Boot
Creación de proyecto bajo arquitectura de dependencias
Inyección de dependencia "Component"
Ejemplo de creación de dependencia propia
Configuración general de Spring Boot
Cambio de puerto y path
Uso de properties y valores
Uso de properties con ejemplo de generación de POJO
Qué son los logs y cómo usarlos
JPA con Spring y Spring Data
Modelado de entidades con JPA
Configuración de datasource con properties y classes
Registro en base de datos con JpaRepository
Uso de JPQL en anotación query
Uso de anotación value para apuntar a properties
Obtención de información usando Query methods
Uso de Query methods con Or, and, OrderBy, Between, Sort
Uso de JPQL con named parameters
Uso de anotación transactional
Rollback con la anotación transactional
REST con Spring Boot
CRUD bajo arquitectura REST
Métodos CREATE, UPDATE y DELETE
Probando la API REST
Pagination con Spring Boot
Conclusiones
Sigue aprendiendo Spring Boot
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 8
Preguntas 6
Creo que tanto el titulo como el video quedaron mal, no es la anotación @Valid sino la anotación @Value 😃
En esta clase se utiliza la anotación @Value para poder leer valores desde el fichero application.properties
La anotación @Valid se usa en conjunto con la dependencia BeanValidation
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
Esta nos permite validar campos de un POJO con simples anotaciones como @NotNull, @NotBlank, @NotEmpty etc.
public class Customer {
@NotNull
private Long customerId;
@NotBlank
private String country;
@NotEmpty
private List<String> languages;
// Getters and Setters
...
}
jdbc.url=jdbc:h2:mem:test
driver=org.h2.Driver
username=SA
password=
@Bean
public DataSource dataSource(){
return DataSourceBuilder.create()
.driverClassName(this.driver)
.url(this.jdbcUrl)
.username(this.userName)
.password(this.password)
.build();
}
No es la mejor práctica si deja los datos así en duro. Pero si los encripta y al momento de usarlo en la clase los desencripta, puede resultar una forma conveniente de tener esos datos de forma externa en un archivo de texto
Creo que spring con vscode esta cada vez más maduro, por si alguien quiere probar
en realidad la forma de hacerlo es con archivos application para los diferentes ambientes y se configura en el principal que ambiente se está usando, por ejemplo
application-dev.properties
server.port=8081
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.show-sql=true
spring.output.ansi.enabled=ALWAYS
application.properties
server.servlet.context-path=/app/v1
logging.level.root=info
logging.level.springframework.web=info
logging.level.org.hibernate=error
spring.profiles.active=dev
Por cuestiones de buenas practicas decidi usar @ConfigurationProperties(“person”) en vez de @value en los otros ejemplos de name, last name. En tal caso, veo que se pueden usar las anotaciones @ConfigurationProperties y @PropertySource juntas, no da ningun error al implementar.
package com.fundamentals.spring.fundamentalsJavaSpringBoot.configuration;
import com.fundamentals.spring.fundamentalsJavaSpringBoot.pojo.UserPojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
@Configuration
@PropertySource("classpath:connection.properties")
@ConfigurationProperties("person")
@EnableConfigurationProperties(UserPojo.class)
public class GeneralConfiguration {
private String name;
private String lastName;
private String random;
@Value("${jdbc.driverClassName}")
private String jdbcDriverClassName;
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@Bean
public DataSource dataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName(jdbcDriverClassName);
dataSourceBuilder.url(jdbcUrl);
dataSourceBuilder.username(jdbcUsername);
dataSourceBuilder.password(jdbcPassword);
return dataSourceBuilder.build();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getRandom() {
return random;
}
public void setRandom(String random) {
this.random = random;
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.