-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathcdi.adoc.po
843 lines (712 loc) · 43.6 KB
/
cdi.adoc.po
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2023-11-12 08:20+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. This guide is maintained in the main Quarkus repository
#. and pull requests should be submitted there:
#. https://github.com/quarkusio/quarkus/tree/main/docs/src/main/asciidoc
#. type: Title =
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Introduction to Contexts and Dependency Injection (CDI)"
msgstr "Introducción a los contextos y a la inyección de dependencia (CDI)"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"In this guide we're going to describe the basic principles of the Quarkus programming model that is based on the https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html[Jakarta Contexts and Dependency Injection 4.1, window=\"_blank\"] specification.\n"
"The xref:cdi-reference.adoc[CDI reference guide] describes the bean discovery, non-standard features and configuration properties.\n"
"The xref:cdi-integration.adoc[CDI integration guide] has more detail on common CDI-related integration use cases, and example code for solutions."
msgstr "En esta guía vamos a describir los principios básicos del modelo de programación Quarkus que se basa en la especificación de link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html[Contextos de Yakarta e Inyección de Dependencia 4.1] . La xref:cdi-reference.adoc[guía de referencia CDI] describe el descubrimiento de beans, las características no estándar y las propiedades de configuración. La xref:cdi-integration.adoc[guía de integración CDI] tiene más detalles sobre casos de uso comunes de integración relacionados con CDI, y código de ejemplo para soluciones."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "OK. Let's start simple. What is a bean?"
msgstr "BIEN. Empecemos con algo sencillo. ¿Qué es una judía?"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Well, a bean is a _container-managed_ object that supports a set of basic services, such as injection of dependencies, lifecycle callbacks and interceptors."
msgstr "Pues bien, un bean es un objeto _gestionado por un contenedor_ que soporta un conjunto de servicios básicos, como la inyección de dependencias, las devoluciones de llamada del ciclo de vida y los interceptores."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Wait a minute. What does \"container-managed\" mean?"
msgstr "Un momento. ¿Qué significa \"gestionado por contenedores\"?"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Simply put, you don't control the lifecycle of the object instance directly.\n"
"Instead, you can affect the lifecycle through declarative means, such as annotations, configuration, etc.\n"
"The container is the _environment_ where your application runs.\n"
"It creates and destroys the instances of beans, associates the instances with a designated context, and injects them into other beans."
msgstr "En pocas palabras, usted no controla directamente el ciclo de vida de la instancia del objeto. En su lugar, puede afectar al ciclo de vida a través de medios declarativos, como anotaciones, configuración, etc. El contenedor es el _entorno_ en el que se ejecuta su aplicación. Crea y destruye las instancias de beans, asocia las instancias a un contexto designado y las inyecta en otros beans."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "What is it good for?"
msgstr "¿Para qué sirve?"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "An application developer can focus on the business logic rather than finding out \"where and how\" to obtain a fully initialized component with all of its dependencies."
msgstr "Un desarrollador de aplicaciones puede centrarse en la lógica de negocio en lugar de averiguar \"dónde y cómo\" obtener un componente totalmente inicializado con todas sus dependencias."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "You've probably heard of the _inversion of control_ (IoC) programming principle. Dependency injection is one of the implementation techniques of IoC."
msgstr "Probablemente haya oído hablar del principio de programación de _inversión de control_ (IoC). La inyección de dependencia es una de las técnicas de implementación de IoC."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "What does a bean look like?"
msgstr "¿Qué aspecto tiene una judía?"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"There are several kinds of beans.\n"
"The most common ones are class-based beans:"
msgstr "Existen varios tipos de judías. Las más comunes son las judías basadas en clases:"
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Simple Bean Example"
msgstr "Ejemplo de frijol simple"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "This is a scope annotation. It tells the container which context to associate the bean instance with. In this particular case, a *single bean instance* is created for the application and used by all other beans that inject `Translator`."
msgstr "Esta es una anotación de alcance. Indica al contenedor con qué contexto debe asociar la instancia del bean. En este caso particular, se crea una *única* instancia de bean para la aplicación y es utilizada por todos los demás beans que inyectan `Translator`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "This is a field injection point. It tells the container that `Translator` depends on the `Dictionary` bean. If there is no matching bean the build fails."
msgstr "Este es un punto de inyección de campo. Indica al contenedor que `Translator` depende del bean `Dictionary`. Si no hay un bean que coincida, la construcción falla."
#: _guides/cdi.adoc
#, fuzzy
msgid "This is an interceptor binding annotation. In this case, the annotation comes from the MicroProfile Metrics. The relevant interceptor intercepts the invocation and updates the relevant metrics. We will talk about <<interceptors,interceptors>> later."
msgstr "Se trata de una anotación de vinculación del interceptor. En este caso, la anotación procede de las métricas del microperfil. El interceptor correspondiente intercepta la invocación y actualiza las métricas pertinentes. Hablaremos de xref:interceptors[los interceptores] más adelante."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Nice. How does the dependency resolution work? I see no names or identifiers."
msgstr "Muy bien. ¿Cómo funciona la resolución de dependencias? No veo nombres ni identificadores."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"That's a good question.\n"
"In CDI the process of matching a bean to an injection point is *type-safe*.\n"
"Each bean declares a set of bean types.\n"
"In our example above, the `Translator` bean has two bean types: `Translator` and `java.lang.Object`.\n"
"Subsequently, a bean is assignable to an injection point if the bean has a bean type that matches the _required type_ and has all the _required qualifiers_.\n"
"We'll talk about qualifiers later.\n"
"For now, it's enough to know that the bean above is assignable to an injection point of type `Translator` and `java.lang.Object`."
msgstr "Es una buena pregunta. En CDI el proceso de emparejar un bean con un punto de inyección es *de tipo seguro* . Cada frijol declara un conjunto de tipos de frijol. En nuestro ejemplo anterior, el bean `Translator` tiene dos tipos de bean: `Translator` y `java.lang.Object` . Posteriormente, un bean es asignable a un punto de inyección si el bean tiene un tipo de bean que coincide con el tipo _requerido_ y tiene todos los calificadores _requeridos_ . Hablaremos de los calificadores más adelante. Por ahora, basta con saber que el bean anterior es asignable a un punto de inyección de tipo `Translator` y `java.lang.Object` ."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Hm, wait a minute. What happens if multiple beans declare the same type?"
msgstr "Un momento. ¿Qué sucede si varios frijoles declaran el mismo tipo?"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"There is a simple rule: *exactly one bean must be assignable to an injection point, otherwise the build fails*.\n"
"If none is assignable the build fails with `UnsatisfiedResolutionException`.\n"
"If multiple are assignable the build fails with `AmbiguousResolutionException`.\n"
"This is very useful because your application fails fast whenever the container is not able to find an unambiguous dependency for any injection point."
msgstr "Hay una regla simple: *exactamente un frijol debe ser asignable a un punto de inyección, de lo contrario la* construcción falla. Si no hay ninguno asignable, la compilación falla con `UnsatisfiedResolutionException` . Si hay varios asignables, la compilación falla con `AmbiguousResolutionException` . Esto es muy útil porque su aplicación falla rápidamente cuando el contenedor no es capaz de encontrar una dependencia inequívoca para cualquier punto de inyección."
#: _guides/cdi.adoc
#, fuzzy
msgid "You can use programmatic lookup via `jakarta.enterprise.inject.Instance` to resolve ambiguities at runtime and even iterate over all beans implementing a given type:"
msgstr "Puede utilizar la búsqueda programática a través de `jakarta.enterprise.inject.Instance` para resolver ambigüedades en tiempo de ejecución e incluso iterar sobre todos los beans que implementen un tipo determinado:"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "This injection point will not result in an ambiguous dependency even if there are multiple beans that implement the `Dictionary` type."
msgstr "Este punto de inyección no dará lugar a una dependencia ambigua aunque haya varios beans que implementen el tipo `Dictionary`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "`jakarta.enterprise.inject.Instance` extends `Iterable`."
msgstr "`javax.enterprise.inject.Instance` amplía `Iterable`."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Can I use setter and constructor injection?"
msgstr "¿Puedo utilizar la inyección de setters y constructores?"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Yes, you can.\n"
"In fact, in CDI the \"setter injection\" is superseded by more powerful https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#initializer_methods[initializer methods, window=\"_blank\"].\n"
"Initializers may accept multiple parameters and don't have to follow the JavaBean naming conventions."
msgstr "Sí que puede. De hecho, en CDI la \"inyección setter\" es sustituida por link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#initializer_methods[métodos inicializadores] más potentes. Los inicializadores pueden aceptar múltiples parámetros y no tienen por qué seguir las convenciones de nomenclatura de JavaBean."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Initialized and Constructor Injection Example"
msgstr "Ejemplo de inyección de inicializadores y constructores"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"This is a constructor injection.\n"
"In fact, this code would not work in regular CDI implementations where a bean with a normal scope must always declare a no-args constructor and the bean constructor must be annotated with `@Inject`.\n"
"However, in Quarkus we detect the absence of no-args constructor and \"add\" it directly in the bytecode.\n"
"It's also not necessary to add `@Inject` if there is only one constructor present."
msgstr "Se trata de una inyección de constructor. De hecho, este código no funcionaría en las implementaciones CDI normales, en las que un frijol con un ámbito normal debe declarar siempre un constructor no-args y el constructor del frijol debe anotarse con `@Inject` . Sin embargo, en Quarkus detectamos la ausencia de constructor no-args y lo \"añadimos\" directamente en el código de bytes. Tampoco es necesario añadir `@Inject` si sólo hay un constructor presente."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "An initializer method must be annotated with `@Inject`."
msgstr "Un método inicializador debe ser anotado con `@Inject`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "An initializer may accept multiple parameters - each one is an injection point."
msgstr "Un inicializador puede aceptar múltiples parámetros - cada uno es un punto de inyección."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "You talked about some qualifiers?"
msgstr "¿Hablaste de algunos calificativos?"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#qualifiers[Qualifiers, window=\"_blank\"] are annotations that help the container to distinguish beans that implement the same type.\n"
"As we already said a bean is assignable to an injection point if it has all the required qualifiers.\n"
"If you declare no qualifier at an injection point the `@Default` qualifier is assumed."
msgstr "link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#qualifiers[Los calific] adores son anotaciones que ayudan al contenedor a distinguir los beans que implementan el mismo tipo. Como ya hemos dicho un beans es asignable a un punto de inyección si tiene todos los calificadores requeridos. Si no declara ningún calificador en un punto de inyección, se asume el calificador `@Default` ."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "A qualifier type is a Java annotation defined as `@Retention(RUNTIME)` and annotated with the `@jakarta.inject.Qualifier` meta-annotation:"
msgstr "Un tipo de calificador es una anotación Java definida como `@Retention(RUNTIME)` y anotada con la meta-anotación `@javax.inject.Qualifier`:"
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Qualifier Example"
msgstr "Ejemplo de calificador"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "The qualifiers of a bean are declared by annotating the bean class or producer method or field with the qualifier types:"
msgstr "Los calificadores de un bean se declaran anotando la clase del bean o el método o campo productor con los tipos de calificadores:"
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Bean With Custom Qualifier Example"
msgstr "Ejemplo de frijol con calificador personalizado"
#: _guides/cdi.adoc
#, fuzzy
msgid "`@Superior` is a https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#defining_qualifier_types[qualifier annotation, window=\"_blank\"]."
msgstr "`@Superior` es una link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#defining_qualifier_types[anotación calificativa] ."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"This bean would be assignable to `@Inject @Superior Translator` and `@Inject @Superior SuperiorTranslator` but not to `@Inject Translator`.\n"
"The reason is that `@Inject Translator` is automatically transformed to `@Inject @Default Translator` during typesafe resolution.\n"
"And since our `SuperiorTranslator` does not declare `@Default` only the original `Translator` bean is assignable."
msgstr "Este bean sería asignable a `@Inject @Superior Translator` y `@Inject @Superior SuperiorTranslator` pero no a `@Inject Translator` . La razón es que `@Inject Translator` se transforma automáticamente en `@Inject @Default Translator` durante la resolución tipográfica. Y puesto que nuestro `SuperiorTranslator` no declara `@Default` sólo el bean original `Translator` es asignable."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Looks good. What is the bean scope?"
msgstr "Se ve bien. ¿Cuál es el alcance de los frijoles?"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "The scope of a bean determines the lifecycle of its instances, i.e. when and where an instance should be created and destroyed."
msgstr "El ámbito de un bean determina el ciclo de vida de sus instancias, es decir, cuándo y dónde debe crearse y destruirse una instancia."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Every bean has exactly one scope."
msgstr "Cada judía tiene exactamente un ámbito de aplicación."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "What scopes can I actually use in my Quarkus application?"
msgstr "¿Qué ámbitos puedo utilizar realmente en mi aplicación Quarkus?"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "You can use all the built-in scopes mentioned by the specification except for `jakarta.enterprise.context.ConversationScoped`."
msgstr "Puede utilizar todos los ámbitos incorporados mencionados por la especificación, excepto `javax.enterprise.context.ConversationScoped`."
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Annotation"
msgstr "Anotación"
#: _guides/cdi.adoc
msgid "Description"
msgstr "Descripción"
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "`@jakarta.enterprise.context.ApplicationScoped`"
msgstr "`@javax.enterprise.context.ApplicationScoped`"
#: _guides/cdi.adoc
#, fuzzy
msgid "A single bean instance is used for the application and shared among all injection points. The instance is created lazily, i.e. once a method is invoked upon the <<client_proxies, client proxy>>."
msgstr "Se utiliza una única instancia de bean para la aplicación y se comparte entre todos los puntos de inyección. La instancia se crea perezosamente, es decir, una vez que se invoca un método sobre el xref:client_proxies[proxy cliente] ."
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "`@jakarta.inject.Singleton`"
msgstr "`@javax.inject.Singleton`"
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Just like `@ApplicationScoped` except that no client proxy is used. The instance is created when an injection point that resolves to a @Singleton bean is being injected."
msgstr "Igual que `@ApplicationScoped`, excepto que no se utiliza un proxy de cliente. La instancia se crea cuando se inyecta un punto de inyección que resuelve a un bean @Singleton."
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "`@jakarta.enterprise.context.RequestScoped`"
msgstr "`@javax.enterprise.context.RequestScoped`"
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "The bean instance is associated with the current _request_ (usually an HTTP request)."
msgstr "La instancia del bean está asociada a la _petición_ actual (normalmente una petición HTTP)."
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "`@jakarta.enterprise.context.Dependent`"
msgstr "`@javax.enterprise.context.Dependent`"
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "This is a pseudo-scope. The instances are not shared and every injection point spawns a new instance of the dependent bean. The lifecycle of dependent bean is bound to the bean injecting it - it will be created and destroyed along with the bean injecting it."
msgstr "Se trata de un pseudoámbito. Las instancias no se comparten y cada punto de inyección genera una nueva instancia del bean dependiente. El ciclo de vida del bean dependiente está ligado al bean que lo inyecta - será creado y destruido junto con el bean que lo inyecta."
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "`@jakarta.enterprise.context.SessionScoped`"
msgstr "`@javax.enterprise.context.SessionScoped`"
#. type: Table
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "This scope is backed by a `jakarta.servlet.http.HttpSession` object. It's only available if the `quarkus-undertow` extension is used."
msgstr "Este ámbito está respaldado por un objeto `javax.servlet.http.HttpSession`. Sólo está disponible si se utiliza la extensión `quarkus-undertow`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "There can be other custom scopes provided by Quarkus extensions. For example, xref:transaction.adoc[`quarkus-narayana-jta`] provides xref:transaction.adoc#transaction-scope[`jakarta.transaction.TransactionScoped`]."
msgstr "Puede haber otros ámbitos personalizados proporcionados por las extensiones de Quarkus. Por ejemplo, `quarkus-narayana-jta` proporciona `javax.transaction.TransactionScoped`."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "`@ApplicationScoped` and `@Singleton` look very similar. Which one should I choose for my Quarkus application?"
msgstr "`@ApplicationScoped` y `@Singleton` son muy similares. ¿Cuál debería elegir para mi aplicación Quarkus?"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "It depends ;-)."
msgstr "Depende ;-)."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"A `@Singleton` bean has no <<client_proxies,client proxy>> and hence an instance is _created eagerly_ when the bean is injected. By contrast, an instance of an `@ApplicationScoped` bean is _created lazily_, i.e.\n"
"when a method is invoked upon an injected instance for the first time."
msgstr "Un bean `@Singleton` no tiene xref:client_proxies[proxy cliente] y, por lo tanto, se crea una instancia _eagerly_ cuando se inyecta el bean. Por el contrario, una instancia de un frijol `@ApplicationScoped` se crea _perezosamente_ , es decir, cuando se invoca por primera vez un método sobre una instancia inyectada."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Furthermore, client proxies only delegate method invocations and thus you should never read/write fields of an injected `@ApplicationScoped` bean directly.\n"
"You can read/write fields of an injected `@Singleton` safely."
msgstr "Además, los proxies de cliente sólo delegan las invocaciones de métodos y, por lo tanto, nunca debe leer/escribir directamente los campos de un frijol `@ApplicationScoped` inyectado. Puede leer/escribir campos de un `@Singleton` inyectado de forma segura."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "`@Singleton` should have a slightly better performance because there is no indirection (no proxy that delegates to the current instance from the context)."
msgstr "`@Singleton` debería tener un rendimiento ligeramente mejor porque no hay indirección (no hay proxy que delegue en la instancia actual del contexto)."
#: _guides/cdi.adoc
#, fuzzy
msgid "On the other hand, you cannot mock `@Singleton` beans using <<getting-started-testing.adoc#quarkus_mock,QuarkusMock>>."
msgstr "Por otra parte, no puede burlarse de los beans de `@Singleton` utilizando xref:getting-started-testing.adoc#quarkus_mock[QuarkusMock] ."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"`@ApplicationScoped` beans can be also destroyed and recreated at runtime.\n"
"Existing injection points just work because the injected proxy delegates to the current instance."
msgstr "`@ApplicationScoped` Los beans también pueden destruirse y recrearse en tiempo de ejecución. Los puntos de inyección existentes sólo funcionan porque el proxy inyectado delega en la instancia actual."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Therefore, we recommend to stick with `@ApplicationScoped` by default unless there's a good reason to use `@Singleton`."
msgstr "Por lo tanto, recomendamos utilizar `@ApplicationScoped` por defecto a menos que haya una buena razón para utilizar `@Singleton`."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "I don't understand the concept of client proxies."
msgstr "No entiendo el concepto de proxies de clientes."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Indeed, the https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#client_proxies[client proxies, window=\"_blank\"] could be hard to grasp, but they provide some useful functionality.\n"
"A client proxy is basically an object that delegates all method invocations to a target bean instance.\n"
"It's a container construct that implements `io.quarkus.arc.ClientProxy` and extends the bean class."
msgstr "De hecho, link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#client_proxies[los pro] xies cliente pueden resultar difíciles de entender, pero proporcionan algunas funcionalidades útiles. Un proxy cliente es básicamente un objeto que delega todas las invocaciones de métodos en una instancia bean de destino. Es una construcción contenedora que implementa `io.quarkus.arc.ClientProxy` y extiende la clase bean."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Client proxies only delegate method invocations. So never read or write a field of a normal scoped bean, otherwise you will work with non-contextual or stale data."
msgstr "Los proxies de cliente sólo delegan las invocaciones de métodos. Por tanto, nunca leas o escribas un campo de un bean de ámbito normal, de lo contrario trabajarás con datos no contextuales o antiguos."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Generated Client Proxy Example"
msgstr "Ejemplo de proxy de cliente generado"
#: _guides/cdi.adoc
#, fuzzy
msgid "The `Translator_ClientProxy` instance is always injected instead of a direct reference to a https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#contextual_instance[contextual instance, window=\"_blank\"] of the `Translator` bean."
msgstr "Siempre se inyecta la instancia `Translator_ClientProxy` en lugar de una referencia directa a una link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html#contextual_instance[instancia contextual] del frijol `Translator` ."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Client proxies allow for:"
msgstr "Los proxies de los clientes permiten:"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Lazy instantiation - the instance is created once a method is invoked upon the proxy."
msgstr "Instanciación perezosa: la instancia se crea una vez que se invoca un método sobre el proxy."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Ability to inject a bean with \"narrower\" scope to a bean with \"wider\" scope; i.e. you can inject a `@RequestScoped` bean into an `@ApplicationScoped` bean."
msgstr "Posibilidad de inyectar un bean de ámbito \"más estrecho\" a un bean de ámbito \"más amplio\"; es decir, se puede inyectar un bean de `@RequestScoped` en un bean de `@ApplicationScoped`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Circular dependencies in the dependency graph. Having circular dependencies is often an indication that a redesign should be considered, but sometimes it's inevitable."
msgstr "Dependencias circulares en el gráfico de dependencias. Tener dependencias circulares suele ser un indicio de que hay que plantearse un rediseño, pero a veces es inevitable."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "In rare cases it's practical to destroy the beans manually. A direct injected reference would lead to a stale bean instance."
msgstr "En raros casos es práctico destruir los beans manualmente. Una referencia inyectada directamente conduciría a una instancia de frijol rancia."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "OK. You said that there are several kinds of beans?"
msgstr "BIEN. ¿Has dicho que hay varios tipos de judías?"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Yes. In general, we distinguish:"
msgstr "Sí. En general, distinguimos:"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Class beans"
msgstr "Clase de frijoles"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Producer methods"
msgstr "Métodos de producción"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Producer fields"
msgstr "Campos de producción"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Synthetic beans"
msgstr "Frijoles sintéticos"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Synthetic beans are usually provided by extensions. Therefore, we are not going to cover them in this guide."
msgstr "Los frijoles sintéticos suelen ser proporcionados por las extensiones. Por lo tanto, no vamos a cubrirlos en esta guía."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Producer methods and fields are useful if you need additional control over instantiation of a bean.\n"
"They are also useful when integrating third-party libraries where you don't control the class source and may not add additional annotations etc."
msgstr "Los métodos y campos productores son útiles si necesita un control adicional sobre la instanciación de un bean. También son útiles cuando se integran bibliotecas de terceros en las que usted no controla el origen de la clase y no puede añadir anotaciones adicionales, etc."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Producers Example"
msgstr "Ejemplo de productores"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"The container analyses the field annotations to build a bean metadata.\n"
"The _type_ is used to build the set of bean types.\n"
"In this case, it will be `double` and `java.lang.Object`.\n"
"No scope annotation is declared and so it's defaulted to `@Dependent`."
msgstr "El contenedor analiza las anotaciones de campo para construir los metadatos de un bean. El _tipo_ se utiliza para construir el conjunto de tipos de judías. En este caso, será `double` y `java.lang.Object` . No se declara ninguna anotación de ámbito, por lo que por defecto será `@Dependent` ."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "The container will read this field when creating the bean instance."
msgstr "El contenedor leerá este campo al crear la instancia del bean."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"The container analyses the method annotations to build a bean metadata.\n"
"The _return type_ is used to build the set of bean types.\n"
"In this case, it will be `List<String>`, `Collection<String>`, `Iterable<String>` and `java.lang.Object`.\n"
"No scope annotation is declared and so it's defaulted to `@Dependent`."
msgstr "El contenedor analiza las anotaciones del método para construir los metadatos de un bean. El _tipo de retorno_ se utiliza para construir el conjunto de tipos de judías. En este caso, será `List<String>` , `Collection<String>` , `Iterable<String>` y `java.lang.Object` . No se declara ninguna anotación de ámbito, por lo que se establece por defecto `@Dependent` ."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "The container will call this method when creating the bean instance."
msgstr "El contenedor llamará a este método cuando cree la instancia del bean."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"There's more about producers.\n"
"You can declare qualifiers, inject dependencies into the producer methods parameters, etc.\n"
"You can read more about producers for example in the https://docs.jboss.org/weld/reference/latest/en-US/html/producermethods.html[Weld docs, window=\"_blank\"]."
msgstr "Hay más cosas sobre los productores. Puede declarar calificadores, inyectar dependencias en los parámetros de los métodos productores, etc. Puede leer más sobre los productores, por ejemplo, en link:https://docs.jboss.org/weld/reference/latest/en-US/html/producermethods.html[los documentos de Weld] ."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "OK, injection looks cool. What other services are provided?"
msgstr "Vale, la inyección parece genial. ¿Qué otros servicios se prestan?"
#. type: Title ===
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Lifecycle Callbacks"
msgstr "Devoluciones de llamada del ciclo de vida"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "A bean class may declare lifecycle `@PostConstruct` and `@PreDestroy` callbacks:"
msgstr "Una clase de bean puede declarar el ciclo de vida `@PostConstruct` y `@PreDestroy` callbacks:"
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Lifecycle Callbacks Example"
msgstr "Ejemplo de devolución de llamada del ciclo de vida"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "This callback is invoked before the bean instance is put into service. It is safe to perform some initialization here."
msgstr "Esta llamada de retorno es invocada antes de que la instancia del bean sea puesta en servicio. Es seguro realizar alguna inicialización aquí."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "This callback is invoked before the bean instance is destroyed. It is safe to perform some cleanup tasks here."
msgstr "Esta llamada de retorno es invocada antes de que la instancia del bean sea destruida. Es seguro realizar algunas tareas de limpieza aquí."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "It's a good practice to keep the logic in the callbacks \"without side effects\", i.e. you should avoid calling other beans inside the callbacks."
msgstr "Es una buena práctica mantener la lógica en las devoluciones de llamada \"sin efectos secundarios\", es decir, debes evitar llamar a otros beans dentro de las devoluciones de llamada."
#. type: Title ===
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Interceptors"
msgstr "Interceptores"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Interceptors are used to separate cross-cutting concerns from business logic.\n"
"There is a separate specification - Java Interceptors - that defines the basic programming model and semantics."
msgstr "Los interceptores se utilizan para separar las preocupaciones transversales de la lógica empresarial. Existe una especificación independiente - Java Interceptors - que define el modelo básico de programación y la semántica."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Simple Interceptor Binding Example"
msgstr "Ejemplo de interceptor simple"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "This is an interceptor binding annotation. See the following examples for how it's used."
msgstr "Se trata de una anotación de enlace de interceptor. Vea los siguientes ejemplos para saber cómo se utiliza."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "An interceptor binding annotation is always put on the interceptor type, and may be put on target types or methods."
msgstr "Esta es una anotación de enlace de interceptor que se utiliza para enlazar nuestro interceptor a un bean. Basta con anotar una clase bean con `@Logged`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Interceptor bindings are often `@Inherited`, but don't have to be."
msgstr "Las fijaciones interceptoras suelen ser `@Inherited`, pero no tienen por qué serlo."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Simple Interceptor Example"
msgstr "Ejemplo de interceptor simple"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "The interceptor binding annotation is used to bind our interceptor to a bean. Simply annotate a bean class with `@Logged`, as in the following example."
msgstr "Esta es una anotación de enlace de interceptor que se utiliza para enlazar nuestro interceptor a un bean. Basta con anotar una clase bean con `@Logged`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "`Priority` enables the interceptor and affects the interceptor ordering. Interceptors with smaller priority values are called first."
msgstr "`Priority` activa el interceptor y afecta al orden de los interceptores. Los interceptores con valores de prioridad menores son llamados primero."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Marks an interceptor component."
msgstr "Marca un componente interceptor."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "An interceptor may inject dependencies."
msgstr "Una instancia de interceptor puede ser el objetivo de la inyección de dependencia."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "`AroundInvoke` denotes a method that interposes on business methods."
msgstr "`AroundInvoke` denota un método que se interpone a los métodos empresariales."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Proceed to the next interceptor in the interceptor chain or invoke the intercepted business method."
msgstr "Proceder al siguiente interceptor en la cadena de interceptores o invocar el método de negocio interceptado."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Instances of interceptors are dependent objects of the bean instance they intercept, i.e. a new interceptor instance is created for each intercepted bean."
msgstr "Las instancias de los interceptores son objetos dependientes de la instancia del bean que interceptan, es decir, se crea una nueva instancia del interceptor para cada bean interceptado."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Simple Example of Interceptor Usage"
msgstr "Ejemplo de interceptor simple"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"The interceptor binding annotation is put on a bean class so that all business methods are intercepted.\n"
"The annotation can also be put on individual methods, in which case, only the annotated methods are intercepted."
msgstr "La anotación de enlace interceptor se pone en una clase de frijol para que todos los métodos de negocio sean interceptados. La anotación también puede ponerse en métodos individuales, en cuyo caso, sólo se interceptan los métodos anotados."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Remember that the `@Logged` annotation is `@Inherited`.\n"
"If there's a bean class that inherits from `MyService`, the `LoggingInterceptor` will also apply to it."
msgstr "Recuerde que la anotación `@Logged` es `@Inherited` . Si existe una clase bean que hereda de `MyService` , también se le aplicará la anotación `LoggingInterceptor` ."
#. type: Title ===
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Decorators"
msgstr "Decoradores"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Decorators are similar to interceptors, but because they implement interfaces with business semantics, they are able to implement business logic."
msgstr "Los decoradores son similares a los interceptores, pero como implementan interfaces con semántica de negocio, son capaces de implementar la lógica de negocio."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Simple Decorator Example"
msgstr "Ejemplo de decorador simple"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "`@Priority` enables the decorator. Decorators with smaller priority values are called first."
msgstr "`@Priority` habilita el decorador. Los decoradores con valores de prioridad menores son llamados primero."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "`@Decorator` marks a decorator component."
msgstr "`@Decorator` marca un componente de decoración."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "The set of decorated types includes all bean types which are Java interfaces, except for `java.io.Serializable`."
msgstr "El conjunto de tipos decorados incluye todos los tipos de bean que son interfaces de Java, excepto `java.io.Serializable`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Each decorator must declare exactly one _delegate injection point_. The decorator applies to beans that are assignable to this delegate injection point."
msgstr "Cada decorador debe declarar exactamente un punto de inyección de _delegado_. El decorador se aplica a los beans que son asignables a este punto de inyección de delegado."
#: _guides/cdi.adoc
msgid "It is possible to obtain information about the decorated bean by using the `@Decorated` qualifier."
msgstr ""
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Decorators can inject other beans."
msgstr "Los decoradores pueden inyectar otras judías."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "The decorator may invoke any method of the delegate object. And the container invokes either the next decorator in the chain or the business method of the intercepted instance."
msgstr "El decorador puede invocar cualquier método del objeto delegado. Y el contenedor invoca el siguiente decorador de la cadena o el método de negocio de la instancia interceptada."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Instances of decorators are dependent objects of the bean instance they intercept, i.e. a new decorator instance is created for each intercepted bean."
msgstr "Las instancias de los decoradores son objetos dependientes de la instancia del bean que interceptan, es decir, se crea una nueva instancia del decorador para cada bean interceptado."
#. type: Title ===
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Events and Observers"
msgstr "Eventos y observadores"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"Beans may also produce and consume events to interact in a completely decoupled fashion.\n"
"Any Java object can serve as an event payload.\n"
"The optional qualifiers act as topic selectors."
msgstr "Los beans también pueden producir y consumir eventos para interactuar de forma completamente desacoplada. Cualquier objeto Java puede servir como carga útil de un evento. Los calificadores opcionales actúan como selectores de temas."
#. type: Block title
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Simple Event Example"
msgstr "Ejemplo de evento simple"
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "`jakarta.enterprise.event.Event` is used to fire events."
msgstr "`javax.enterprise.event.Event` se utiliza para disparar eventos."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "Fire the event synchronously."
msgstr "Dispara el evento de forma sincronizada."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "This method is notified when a `TaskCompleted` event is fired."
msgstr "Este método es notificado cuando se dispara un evento `TaskCompleted`."
#. type: Plain text
#: _guides/cdi.adoc
#, fuzzy
msgid "For more info about events/observers visit https://docs.jboss.org/weld/reference/latest/en-US/html/events.html[Weld docs, window=\"_blank\"]."
msgstr "Para más información sobre los eventos/observadores, visita link:https://docs.jboss.org/weld/reference/latest/en-US/html/events.html[los documentos de Weld, window=_blank]."
#. type: Title ==
#: _guides/cdi.adoc
#, fuzzy, no-wrap
msgid "Conclusion"
msgstr "Conclusión"
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"In this guide, we've covered some basic topics of the Quarkus programming model that is based on the https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html[Jakarta Contexts and Dependency Injection 4.1, window=\"_blank\"] specification.\n"
"Quarkus implements the CDI Lite specification, but not CDI Full.\n"
"See also <<cdi-reference.adoc#supported_features_and_limitations,the list of supported features and limitations>>.\n"
"There are also quite a few <<cdi-reference#nonstandard_features,non-standard features>> and <<cdi-reference.adoc#build_time_apis,Quarkus-specific APIs>>."
msgstr "En esta guía, hemos cubierto algunos temas básicos del modelo de programación Quarkus que se basa en la especificación link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html[Contextos de Yakarta e Inyección de Dependencia 4.1] . Quarkus implementa la especificación CDI Lite, pero no CDI Full. Véase también xref:cdi-reference.adoc#supported_features_and_limitations[la lista de características y limitaciones soportadas] . También hay bastantes xref:cdi-reference.adoc#nonstandard_features[características no estándar] y xref:cdi-reference.adoc#build_time_apis[API específicas de] Quarkus."
#: _guides/cdi.adoc
#, fuzzy
msgid ""
"If you wish to learn more about Quarkus-specific features and limitations there is a Quarkus xref:cdi-reference.adoc[CDI Reference Guide].\n"
"We also recommend you to read the https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html[CDI specification] and the https://docs.jboss.org/weld/reference/latest/en-US/html/[Weld documentation] (Weld is a CDI Reference Implementation) to get acquainted with more complex topics."
msgstr "Si desea saber más sobre las características y limitaciones específicas de Quarkus, existe una xref:cdi-reference.adoc[Guía de referencia CDI] de Quarkus. También le recomendamos que lea la link:https://jakarta.ee/specifications/cdi/4.1/jakarta-cdi-spec-4.1.html[especificación CDI] y la link:https://docs.jboss.org/weld/reference/latest/en-US/html/[documentación de Weld] (Weld es una implementación de referencia CDI) para familiarizarse con temas más complejos."