No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Uso de anotaci贸n value para apuntar a properties

21/31
Recursos

Aportes 8

Preguntas 6

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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(鈥減erson鈥) 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;
    }

}