[JAVA] Informationen zu Anmerkungen zu Spring DI

Arten von Anmerkungen zu Spring DI

Context Configuration Annotations   @Scope @Autowired @Resource @Inject @Required @Named @Order @PostConstruct @PreDestroy

@Scope

Im Allgemeinen wird nur eine Bean, die automatisch mit @Component @Service @Repository scannt, als Singleton generiert. Sie können dies jedoch mithilfe der @ Scope-Annotation ändern. Mit anderen Worten, ich werde den Bohnenbereich einstellen.

Singleton gibt eine Bean pro "IoC-Container" zurück Prototyp - Erstellt jedes Mal eine neue Bean, wenn eine Anfrage vorliegt, und kehrt zurück request gibt eine Bean pro "HTTP-Anforderungsobjekt" zurück Sitzung gibt eine Bean pro "HTTP-Sitzungsobjekt" zurück globalSession-Gibt eine Bean für "alle Sitzungen" zurück  

Example


   @Component
   @Scope("prototype")
   Class Hoge { ... } 
   <bean id="hoge" class="aaa.java.bbb.ccc.hoge" scope="prototype" />

Wenn Sie eine Bean injizieren, können Sie die folgenden Anmerkungen verwenden.

@Autowired

Anmerkungen zum Spring Framework Wenn die Bean-ID oder der Bean-Name übereinstimmen, wenden Sie an. Typ Driven Injection Wenn einige Beans durchsucht werden, werden sie durch die Annotation "@Qualifier (name =" hoge ")" unterschieden. Grundsätzlich werden allen Attributen, die @Autowired sind, Beans injiziert.  

@Resource

Anmerkungen, die in Spring 2.5 und höher verwendet werden können und nicht zum Spring Framework gehören Suchen Sie die Bohne, die durch den Bohnennamen injiziert wird. Fügen Sie dazu die JSR.250-Bibliothek jsr250-api.jar zum Klassenpfad hinzu.  

Maven-Einstellungen


<dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>jsr250-api</artifactId>
      <version>1.0</version>
</dependency>

@Inject

Es kann mit Spring 3.0 oder höher verwendet werden. Es wird empfohlen, @Inject zu verwenden, um Apps zu konfigurieren, die nicht zu einem bestimmten Framework gehören. Fügen Sie dazu "javax.inject-x.x.x.jar" aus der JSR.330-Bibliothek zum Klassenpfad hinzu.  

Maven-Einstellungen


<dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
</dependency>

@Required

Es wird verwendet, um über die Setter-Methode zu schreiben und die erforderlichen Eigenschaften festzulegen. Um es zu verwenden, können Sie entweder die RequiredBeannotationBeanPostProcessor-Klasse als Bean registrieren oder die Einstellung <context.annotation-config> hinzufügen.

Example


   package day1;
   public class Emp {
   private String ename;
   @Requried
   public void setEname( String ename ) { this.ename = ename; }
   public String getName() { return this.ename; }
   }

Beans.xml


<bean id="emp" class="day1.Emp" >
  <!--Fehler, wenn die folgenden Eigenschaften nicht festgelegt sind-->
  <!-- <property ename="ename" value="hoge" /> -->
</bean>

main()


   ApplicationContext ctx = new ClassPathXmlApplicationContext("Beans.xml");
   Emp emp = (Student) ctx.getBean("emp");
   System.out.println("Ename : " + emp.getEname());

Wenn ich es ausführe, wird folgende Fehlermeldung angezeigt:

>

#### **`Error`**
```ruby

   Property 'ename' is required for bean 'emp'

 

Ich bin etwas müde@Named @Order @Über PostConstruct morgen ...

Recommended Posts

Informationen zu Anmerkungen zu Spring DI
Über DI des Frühlings ①
Über DI des Frühlings ②
Über den Frühling ③
Über Spring AOP
Über den Frühling AOP
[Java] Spring DI ③
Wichtige Änderungen im Zusammenhang mit dem Spring Framework 5.0 DI-Container
Informationen zur Spring Security-Authentifizierung
Spring Framework Zusammenfassung - Über DI
Über Bean und DI
Erster Frühlingsstiefel (DI)
Über Spring AOP Pointcut
Frühlingsgrundlagen ~ DI Edition ~
[Spring Boot] Ich dachte über testbaren Code von DI nach
[Persönliche Notizen] Über das Spring Framework
Informationen zum Spring Framework-Kontextfehler
Einführung in Spring Boot ~ ~ DI ~
Tipps zur Spring Boot DB
[Java] Wie Spring DI funktioniert
Einstellungen für die Spring Boot-Leistung
Über das Binden der Spring AOP Annotation
Häufige Anmerkungen für Spring Boot-Tests
[Java] Spring DI ④ - Lebenszyklusverwaltung