@Named(value = "newtuto")
@ApplicationScoped
public class _04_New {
//üretilen
@Produces
public String uretilenData( @New StudentDto studentDto){
studentDto=StudentDto.builder()
.studentId(0L).studentName("student Adi")
.build();
return studentDto.getStudentName();
}
@Getter
@Inject
private String tuketilenData;
}
Bu Java kodu, CDI (Contexts and Dependency Injection) ve Lombok kütüphanesini kullanarak bir sınıf tanımlıyor. Açıklamalarıyla birlikte her bir parçanın ne işe yaradığını inceleyelim:
-
@Named(value = "newtuto")
: Bu annotation, CDI tarafından yönetilen bir bean'i tanımlar venewtuto
adı altında JSF (JavaServer Faces) gibi view teknolojilerinde kullanılabilir hale getirir¹⁵. -
@ApplicationScoped
: Bu annotation, bean'in uygulama kapsamında olduğunu belirtir, yani uygulama çalıştığı sürece tek bir instance'ı olur ve tüm uygulama boyunca paylaşılır¹.
@Produces
ve @New
ile ilgili kısım:
-
@Produces
: Bu annotation, CDI'nin bir nesneyi üretmesi ve bağımlılık enjeksiyonu için kullanılabilir hale getirmesi gerektiğini belirtir. Bu örnekte,uretilenData
metodu,StudentDto
tipinde bir nesne üretir ve bu nesneninstudentName
özelliğini döndürür⁶. -
@New
: Bu annotation, her seferinde yeni birStudentDto
nesnesi üretilmesini sağlar. Yani,uretilenData
metodu çağrıldığında her zaman yeni birStudentDto
nesnesi oluşturulur ve bu nesne üzerinde işlemler yapılır¹¹.
@Getter
ve @Inject
ile ilgili kısım:
-
@Getter
: Lombok kütüphanesinin bir parçası olan bu annotation, sınıfıntuketilenData
adlı özel alanı için getter metodu oluşturur¹⁸. -
@Inject
: Bu annotation, CDI tarafından yönetilen bir bağımlılığın bu sınıfa enjekte edilmesini sağlar. Yani,tuketilenData
alanı, CDI container tarafından otomatik olarak doldurulur²².
Özetle, bu kod parçası, newtuto
adında bir CDI bean tanımlar ve bu bean içinde StudentDto
tipinde bir nesne üretir ve bu nesnenin ismini döndürür. Ayrıca, başka bir yerde üretilen String
tipinde bir veriyi tuketilenData
alanına enjekte eder. Bu yapı, özellikle enterprise Java uygulamalarında sıkça kullanılır ve bağımlılık yönetimini kolaylaştırır.
Kaynak: Bing ile konuşma, 18.05.2024
(1) java - What is javax.inject.Named annotation supposed to be used for .... https://stackoverflow.com/questions/5415261/what-is-javax-inject-named-annotation-supposed-to-be-used-for.
(2) java - What is the difference between @ApplicationScoped and @Singleton .... https://stackoverflow.com/questions/4555844/what-is-the-difference-between-applicationscoped-and-singleton-scopes-in-cdi.
(3) java - Please explain the @Produces annotation in CDI - Stack Overflow. https://stackoverflow.com/questions/16534728/please-explain-the-produces-annotation-in-cdi.
(4) Creating a Custom Annotation in Java | Baeldung. https://www.baeldung.com/java-custom-annotation.
(5) java - How can I get @getter and @setter? - Stack Overflow. https://stackoverflow.com/questions/35776356/how-can-i-get-getter-and-setter.
(6) java - What is the difference between @Inject and @Autowired in Spring .... https://stackoverflow.com/questions/7142622/what-is-the-difference-between-inject-and-autowired-in-spring-framework-which.
(7) ApplicationScoped (Java(TM) EE 7 Specification APIs) - Oracle. https://docs.oracle.com/javaee/7/api/javax/enterprise/context/ApplicationScoped.html.
(8) ApplicationScope (Spring Framework 6.1.6 API). https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/context/annotation/ApplicationScope.html.
(9) ApplicationScope (Spring Framework API) - Javadoc - Pleiades. https://spring.pleiades.io/spring-framework/docs/current/javadoc-api/org/springframework/web/context/annotation/ApplicationScope.html.
(10) ApplicationScoped (Java EE 6 ) - Oracle. https://docs.oracle.com/javaee/6/api/javax/faces/bean/ApplicationScoped.html.
(11) java - How to use @produces annotation? - Stack Overflow. https://stackoverflow.com/questions/17842155/how-to-use-produces-annotation.
(12) The @Produces Annotation (The Java EE 6 Tutorial) - Oracle. https://docs.oracle.com/cd/E19798-01/821-1841/gipxf/index.html.
(13) The @Produces Annotation (The Java EE 6 Tutorial, Volume I) - Oracle. https://docs.oracle.com/cd/E19226-01/820-7627/gipxf/index.html.
(14) @Consumes and @Produces Annotation to Customize ... - Dinesh on Java. https://www.dineshonjava.com/using-consumes-and-produces-to/.
(15) Annotations Basics (The Java™ Tutorials > Learning the Java Language .... https://docs.oracle.com/javase/tutorial/java/annotations/basics.html.
(16) Declaring an Annotation Type (The Java™ Tutorials - Oracle. https://docs.oracle.com/javase/tutorial/java/annotations/declaring.html.
(17) Annotation (Java Platform SE 8 ) - Oracle. https://docs.oracle.com/javase/8/docs/api/java/lang/annotation/Annotation.html.
(18) What' the purpose of @Named annotation - Stack Overflow. https://stackoverflow.com/questions/26071779/what-the-purpose-of-named-annotation.
(19) Creating Named beans with annotations (JSF 2.0) - IBM. https://www.ibm.com/docs/SSRTLW_9.6.0/com.ibm.etools.jsf.doc/topics/tcrt_facesNamed_bean_annot.html.
(20) @Getter and @setter - Project Lombok. https://projectlombok.org/features/GetterSetter.
(21) java - Using @Getter on Classes, Enums, etc - Stack Overflow. https://stackoverflow.com/questions/54551114/using-getter-on-classes-enums-etc.
(22) What is the @Getter annotation in Lombok? - Educative. https://www.educative.io/answers/what-is-the-getter-annotation-in-lombok.
(23) Wiring in Spring: @Autowired, @resource and @Inject | Baeldung. https://www.baeldung.com/spring-annotations-resource-inject-autowire.
(24) How to use the @Inject attribute in Java - Educative. https://www.educative.io/answers/how-to-use-the-inject-attribute-in-java.
(25) Inject (Java(TM) EE 7 Specification APIs) - Oracle. https://docs.oracle.com/javaee/7/api/javax/inject/Inject.html.
(26) undefined. http://download.oracle.com/javaee/6/api/javax/inject/Named.html.
(27) undefined. https://dzone.com/articles/java-ee6-cdi-named-components.
(28) undefined. http://www.w3.org/1999/xhtml.
(29) undefined. http://java.sun.com/jsf/html.
(30) undefined. http://java.sun.com/jsf/core.
(31) undefined. http://java.sun.com/jsf/facelets.
(32) undefined. http://www.jboss.org/jdf/quickstarts/jboss-as-quickstart/guide/GreeterQuickstart/.
Top comments (0)