Commit 6a5f1c7f authored by agarca4's avatar agarca4
Browse files

clase 7, Propiedades y @Value

parent dc0fb965
package es.mde;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import es.mde.restaurante.entidades.Pedido;
@Configuration
public class ConfiguracionPorJava {
/*
* Lo primero que hay q tener claro es que el @Value solo funciona con los
* beans, si haces un new de una clase, eso no es un bean y va a sacar un null
* en la propiedad
*/
@Bean("config")
public Test beanPorConfiguracion() {
Test test = new Test() {
int llamadas = 0;
// puedo usar @value en un campo, para luego usar su valor donde quiera
@Value("${restaurante-casa-porras.idioma}")
String idiomaPedido;
@Override
public void init() {
System.out.printf("Me han llamado %s veces", ++llamadas);
System.out.println();
}
// también puedo usar @Value en el constructor de un bean
@Bean
public Pedido getPedido(@Value("${restaurante-casa-porras.pedidoMinimo}") Double pedidoMinimo) {
Pedido pedido = new Pedido();
pedido.setPedidoMinimo(pedidoMinimo);
pedido.setIdioma(idiomaPedido);
return pedido;
};
test.init();
return test;
}
}
......@@ -2,42 +2,22 @@ package es.mde;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import es.mde.restaurante.entidades.Pedido;
@SpringBootApplication
//aquí meto mi bean de xml
//@ImportResource({ "config.xml" })
/*
* Con esta anotacion, le decimos que importe la configuracion de las clases
* indicadas. No es necesaria para que la escanee si está en el mismo paquete,
* pero sí si está fuera
*/
//@Import({ConfiguracionPorJava.class})
@Import({ ConfiguracionPorJava.class })
public class RestauranteCasaPorrasApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(RestauranteCasaPorrasApplication.class, args);
/*
* SpringInitlz. Con SpringBoot ya no hace falta el config-scan.xml que usábamos
* para activar el escaneo de componentes. SpringBoot escanea ya por defecto a
* partir del paquete donde esta la clase con la anotacion. Si movemos la clase
* Test fuera a otro paquete, no la va detectar.Ojo con esto!
*/
Test miTest = new Test();
miTest = context.getBean("mde", Test.class);
miTest.init();
miTest = context.getBean("config", Test.class);
miTest.init();
// context.close();
Pedido beanPedido = context.getBean(Pedido.class);
System.out.println(beanPedido);
context.close();
}
......
package es.mde;
import org.springframework.stereotype.Component;
@Component("mde")
public class Test {
private String testString = "Este es mi valor por defecto del paquete mde";
public String getTestString() {
return testString;
}
public void setTestString(String testString) {
this.testString = testString;
}
public void init() {
System.out.println(testString);
}
}
package es.mde.restaurante.entidades;
public class Carne extends Comida {
private TipoCarne tipoCarne;
private Double gramosRacion;
private Double caloriasRacion;
public Carne(String nombreEnLaCarta, Double precio, TipoCarne tipoCarne, Double gramosRacion,
Double caloriasRacion) {
super(nombreEnLaCarta, precio);
this.tipoCarne = tipoCarne;
this.gramosRacion = gramosRacion;
this.caloriasRacion = caloriasRacion;
}
public TipoCarne getTipoCarne() {
return tipoCarne;
}
public void setTipoCarne(TipoCarne tipoCarne) {
this.tipoCarne = tipoCarne;
}
public Double getGramosRacion() {
return gramosRacion;
}
public void setGramosRacion(Double gramosRacion) {
this.gramosRacion = gramosRacion;
}
public Double getCaloriasRacion() {
return caloriasRacion;
}
public void setCaloriasRacion(Double caloriasRacion) {
this.caloriasRacion = caloriasRacion;
}
@Override
public String toString() {
return "Carne [tipoCarne=" + tipoCarne + ", gramosRacion=" + gramosRacion + ", caloriasRacion=" + caloriasRacion
+ ", getNombreEnLaCarta()=" + getNombreEnLaCarta() + ", getPrecio()=" + getPrecio() + "]";
}
}
package es.mde.restaurante.entidades;
public abstract class Comida {
private String nombreEnLaCarta;
private Double precioRacion;
public Comida(String nombreEnLaCarta, Double precio) {
super();
this.nombreEnLaCarta = nombreEnLaCarta;
this.precioRacion = precio;
}
public String getNombreEnLaCarta() {
return nombreEnLaCarta;
}
public void setNombreEnLaCarta(String nombreEnLaCarta) {
this.nombreEnLaCarta = nombreEnLaCarta;
}
public Double getPrecio() {
return precioRacion;
}
public void setPrecio(Double precio) {
this.precioRacion = precio;
}
}
package es.mde.restaurante.entidades;
import java.time.LocalDateTime;
public class Marisco extends Comida {
private String tipoMarisco;
private String origen;
private LocalDateTime fechaCaptura;
public Marisco(String nombreEnLaCarta, Double precio, String origen, LocalDateTime fechaCaptura) {
super(nombreEnLaCarta, precio);
this.origen = origen;
this.fechaCaptura = fechaCaptura;
}
public String getTipoMarisco() {
return tipoMarisco;
}
public void setTipoMarisco(String tipoMarisco) {
this.tipoMarisco = tipoMarisco;
}
public String getOrigen() {
return origen;
}
public void setOrigen(String origen) {
this.origen = origen;
}
public LocalDateTime getFechaCaptura() {
return fechaCaptura;
}
public void setFechaCaptura(LocalDateTime fechaCaptura) {
this.fechaCaptura = fechaCaptura;
}
@Override
public String toString() {
return "Marisco [tipoMarisco=" + tipoMarisco + ", origen=" + origen + ", fechaCaptura=" + fechaCaptura
+ ", getNombreEnLaCarta()=" + getNombreEnLaCarta() + ", getPrecio()=" + getPrecio() + "]";
}
}
package es.mde.restaurante.entidades;
import java.time.Instant;
import java.util.Collection;
public class Pedido {
private Instant fechaPedido;
private Collection<Comida> contenidoPedido;
private Double importePedido;
private Double pedidoMinimo;
private String idioma;
public Pedido() {
super();
}
public Pedido(Collection<Comida> contenidoPedido, Double importePedido) {
super();
this.fechaPedido = Instant.now();
this.contenidoPedido = contenidoPedido;
this.importePedido = importePedido;
}
public Instant getFechaPedido() {
return fechaPedido;
}
public void setFechaPedido(Instant fechaPedido) {
this.fechaPedido = fechaPedido;
}
public Collection<Comida> getContenidoPedido() {
return contenidoPedido;
}
public void setContenidoPedido(Collection<Comida> contenidoPedido) {
this.contenidoPedido = contenidoPedido;
}
public Double getImportePedido() {
return importePedido;
}
public void setImportePedido(Double importePedido) {
this.importePedido = importePedido;
}
public Double getPedidoMinimo() {
return pedidoMinimo;
}
public void setPedidoMinimo(Double pedidoMinimo) {
this.pedidoMinimo = pedidoMinimo;
}
public String getIdioma() {
return idioma;
}
public void setIdioma(String idioma) {
this.idioma = idioma;
}
@Override
public String toString() {
return "Pedido [fechaPedido=" + fechaPedido + ", contenidoPedido=" + contenidoPedido + ", importePedido="
+ importePedido + ", pedidoMinimo=" + pedidoMinimo + ", idioma=" + idioma + "]";
}
}
package es.mde.restaurante.entidades;
public enum TipoCarne {
TERNERA_GALLEGA, CORDERO_LECHAL, CERDO_IBERICO
}
restaurante-casa-porras.idioma=ingles
restaurante-casa-porras.pedidoMinimo=50.00
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment