Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
agarca4
Restaurante Spring
Commits
17d90c9b
Commit
17d90c9b
authored
4 years ago
by
agarca4
Browse files
Options
Download
Email Patches
Plain Diff
clase 9, @Autowired
parent
7538f861
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
88 additions
and
31 deletions
+88
-31
src/main/java/es/mde/ConfiguracionPorJava.java
src/main/java/es/mde/ConfiguracionPorJava.java
+20
-3
src/main/java/es/mde/RestauranteCasaPorrasApplication.java
src/main/java/es/mde/RestauranteCasaPorrasApplication.java
+8
-16
src/main/java/es/mde/restaurante/entidades/Carne.java
src/main/java/es/mde/restaurante/entidades/Carne.java
+2
-0
src/main/java/es/mde/restaurante/entidades/Comida.java
src/main/java/es/mde/restaurante/entidades/Comida.java
+9
-0
src/main/java/es/mde/restaurante/entidades/Pedido.java
src/main/java/es/mde/restaurante/entidades/Pedido.java
+44
-0
src/main/resources/application.properties
src/main/resources/application.properties
+5
-12
No files found.
src/main/java/es/mde/ConfiguracionPorJava.java
View file @
17d90c9b
package
es.mde
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Primary
;
import
es.mde.restaurante.entidades.Carne
;
import
es.mde.restaurante.entidades.Comida
;
import
es.mde.restaurante.entidades.Pedido
;
import
es.mde.restaurante.entidades.TipoCarne
;
@Configuration
public
class
ConfiguracionPorJava
{
...
...
@@ -14,12 +17,26 @@ public class ConfiguracionPorJava {
String
idiomaPedido
;
@Bean
public
Pedido
getPedido
(
@Value
(
"${restaurante-casa-porras.pedidoMinimo}"
)
Double
pedidoMinimo
)
{
public
Pedido
getPedido
()
{
Pedido
pedido
=
new
Pedido
();
pedido
.
setPedidoMinimo
(
pedidoMinimo
);
pedido
.
setIdioma
(
idiomaPedido
);
return
pedido
;
}
@Bean
(
"comida1"
)
@Primary
public
Comida
getComida
()
{
Carne
carne
=
new
Carne
(
"Soy la COMIDA INYECTADA"
,
50.0
,
TipoCarne
.
CERDO_IBERICO
,
500.0
,
1800.00
);
System
.
out
.
println
(
"Creando bean Comida1"
);
return
carne
;
}
@Bean
(
"comida2"
)
public
Comida
getComida2
()
{
Carne
carne
=
new
Carne
(
"Soy la COMIDA INYECTADA 2"
,
100.0
,
TipoCarne
.
CORDERO_LECHAL
,
250.0
,
1200.00
);
System
.
out
.
println
(
"Creando bean Comida2"
);
return
carne
;
}
}
This diff is collapsed.
Click to expand it.
src/main/java/es/mde/RestauranteCasaPorrasApplication.java
View file @
17d90c9b
package
es.mde
;
import
java.util.ArrayList
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.boot.SpringApplication
;
...
...
@@ -13,27 +15,17 @@ import es.mde.restaurante.entidades.Pedido;
@Import
({
ConfiguracionPorJava
.
class
})
public
class
RestauranteCasaPorrasApplication
{
/*
* esta es la que usa springboot por defecto, usamos la interface Logger con la
* implentacion slf4j, pero podemos usar otra implementación. Estamos usando el
* patrón de diseño FACHADA
*/
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
RestauranteCasaPorrasApplication
.
class
);
public
static
void
main
(
String
[]
args
)
{
ConfigurableApplicationContext
context
=
SpringApplication
.
run
(
RestauranteCasaPorrasApplication
.
class
,
args
);
Pedido
beanPedido
=
context
.
getBean
(
Pedido
.
class
);
/* este es el orden de peioridad que ofrece */
log
.
error
(
beanPedido
.
toString
());
log
.
warn
(
beanPedido
.
toString
());
log
.
info
(
beanPedido
.
toString
());
/* por defecto, de aquí para abajo no los mostrará, hara un filtro */
log
.
debug
(
beanPedido
.
toString
());
log
.
trace
(
beanPedido
.
toString
());
/* veamos las configuraciones en el properties */
Pedido
pedido
=
context
.
getBean
(
Pedido
.
class
);
log
.
error
(
pedido
.
getComida
().
toString
());
log
.
warn
(
pedido
.
toString
());
context
.
close
();
...
...
This diff is collapsed.
Click to expand it.
src/main/java/es/mde/restaurante/entidades/Carne.java
View file @
17d90c9b
...
...
@@ -6,6 +6,8 @@ public class Carne extends Comida {
private
Double
gramosRacion
;
private
Double
caloriasRacion
;
public
Carne
(
String
nombreEnLaCarta
,
Double
precio
,
TipoCarne
tipoCarne
,
Double
gramosRacion
,
Double
caloriasRacion
)
{
super
(
nombreEnLaCarta
,
precio
);
...
...
This diff is collapsed.
Click to expand it.
src/main/java/es/mde/restaurante/entidades/Comida.java
View file @
17d90c9b
...
...
@@ -5,6 +5,8 @@ public abstract class Comida {
private
String
nombreEnLaCarta
;
private
Double
precioRacion
;
public
Comida
(
String
nombreEnLaCarta
,
Double
precio
)
{
super
();
this
.
nombreEnLaCarta
=
nombreEnLaCarta
;
...
...
@@ -27,4 +29,11 @@ public abstract class Comida {
this
.
precioRacion
=
precio
;
}
@Override
public
String
toString
()
{
return
"Comida [nombreEnLaCarta="
+
nombreEnLaCarta
+
", precioRacion="
+
precioRacion
+
"]"
;
}
}
This diff is collapsed.
Click to expand it.
src/main/java/es/mde/restaurante/entidades/Pedido.java
View file @
17d90c9b
...
...
@@ -3,6 +3,19 @@ package es.mde.restaurante.entidades;
import
java.time.Instant
;
import
java.util.Collection
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.context.annotation.Primary
;
import
org.springframework.stereotype.Component
;
@Component
@Primary
/*
* Al colocar el @Component, Spring ya va a crear un bean de tipo Pedido, pero
* como en la clase ConfiguracionPorJava tengo otro bean de la clase Pedido, al
* recuperar un bean de este tipo, Spring peta xq no sabe cual quieres.
* Colocando aquí @Primary, le decimos que queremos que el bean salga de aqui.
*/
public
class
Pedido
{
private
Instant
fechaPedido
;
...
...
@@ -10,11 +23,28 @@ public class Pedido {
private
Double
importePedido
;
private
Double
pedidoMinimo
;
private
String
idioma
;
// este campo solo es para ver como funciona el autowired
private
Comida
comida
;
public
Pedido
()
{
super
();
}
/*
* Le decimos a Spring que al crear el Bean Pedido, cree tb el Bean comida. Al
* hacerlo en el constructor estamos indicando que el campo comida es
* imprescindible. De hecho, si comentamos el bean comida, no nos va a dejar
* hacer un bean pedido. Ademas si tengo varios constructores, construirá el
* bean con el que esté anotado con el @Autowired. Si hay varios marcados, usará
* el que mas campos pueda satisfacer. Si tuvieramos varios bean del tipo
* comida, con @Qualifier y el nombre del bean concreto le decimos cual usar
*/
@Autowired
public
Pedido
(
/*@Qualifier("comida2")*/
Comida
comida
)
{
System
.
out
.
println
(
"Estoy inyectando el bean de tipo comida al crear el bean pedido"
);
this
.
comida
=
comida
;
}
public
Pedido
(
Collection
<
Comida
>
contenidoPedido
,
Double
importePedido
)
{
super
();
this
.
fechaPedido
=
Instant
.
now
();
...
...
@@ -68,4 +98,18 @@ public class Pedido {
+
importePedido
+
", pedidoMinimo="
+
pedidoMinimo
+
", idioma="
+
idioma
+
"]"
;
}
// solo para ver como funciona el autowired
public
Comida
getComida
()
{
return
comida
;
}
/*
* Aquí conseguimos que despues de crearse el bean con el constructor, le
* resetee ese campo con este setter
*/
// @Autowired
// public void setComida(@Qualifier("comida2")Comida comida) {
// this.comida = comida;
// }
}
This diff is collapsed.
Click to expand it.
src/main/resources/application.properties
View file @
17d90c9b
restaurante-casa-porras.idioma
=
ingles
restaurante-casa-porras.pedidoMinimo
=
50.00
# Con esto indicamos al log que solo presente los log WARN y superior
# logging.level.root=WARN
# Podemos decirle desde donde, no le decimos desde root
# logging.level.root=DEBUG
# logging.level.es.med=DEBUG
#agregamos mas configuraciones:
#
logging.file.name=logs/RestauranteCasaPorras.log
#
logging.pattern.dateformat=yyyy-MM-dd HH:mm
#
porras.formatofecha=%date{ddMMM HH:mm:ss, UTC}Z
#
logging.pattern.console=${porras.formatofecha} [%thread %clr(${PID:- })] %-5level %logger{15} => %msg %n
logging.file.name
=
logs/RestauranteCasaPorras.log
logging.pattern.dateformat
=
yyyy-MM-dd HH:mm
porras.formatofecha
=
%date{ddMMM HH:mm:ss, UTC}Z
logging.pattern.console
=
${porras.formatofecha} [%thread %clr(${PID:- })] %-5level %logger{15} => %msg %n
#logging.pattern.console=${porras.formatofecha} [%thread %clr(${PID:- })] %highlight(%-5level) %cyan(%logger{15}) => %msg %n
#
Documentacion
:
https://logback.qos.ch/manual/layouts.html
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment