DEV Community

Mustafa  Çam
Mustafa Çam

Posted on

@New

@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;
Enter fullscreen mode Exit fullscreen mode

}

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 ve newtuto 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 nesnenin studentName özelliğini döndürür⁶.
  • @New: Bu annotation, her seferinde yeni bir StudentDto nesnesi üretilmesini sağlar. Yani, uretilenData metodu çağrıldığında her zaman yeni bir StudentDto 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ın tuketilenData 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)