Types d'annotations relatives à Spring DI
Context Configuration Annotations @Scope @Autowired @Resource @Inject @Required @Named @Order @PostConstruct @PreDestroy
@Scope
Généralement, un seul bean qui analyse automatiquement avec @Component @Service @Repository est généré en tant que singleton, mais vous pouvez utiliser l'annotation @Scope pour changer cela. En d'autres termes, je vais définir la gamme de beans.
singleton-Return un bean par ʻIoC container
prototype --Crée un nouveau bean à chaque fois qu'il y a unedemandeet retourne request-renvoie un bean parobjet de requête HTTPsession-renvoie un bean parobjet de session HTTP` globalSession - Renvoie un bean pour «toutes les sessions»
Example
   @Component
   @Scope("prototype")
   Class Hoge { ... } 
   <bean id="hoge" class="aaa.java.bbb.ccc.hoge" scope="prototype" />
Si vous injectez un bean, vous pouvez utiliser les annotations suivantes.
@Autowired
Annotations appartenant au Spring Framework
S'applique si l'ID ou le nom du bean correspond. Injection pilotée par type
Si certains beans sont recherchés, ils se distinguent par l'annotation @Qualifier (name =" hoge ").
Fondamentalement, tous les attributs @Autowired sont injectés avec des beans.
 
@Resource
Annotations qui peuvent être utilisées dans Spring 2.5 et au-dessus et qui n'appartiennent pas à Spring Framework
Trouvez le bean injecté par nom de bean. Pour l'utiliser, ajoutez la bibliothèque JSR.250 jsr250-api.jar au chemin de classe.
 
Paramètres Maven
<dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>jsr250-api</artifactId>
      <version>1.0</version>
</dependency>
@Inject
Il peut être utilisé avec Spring 3.0 ou supérieur. Il est recommandé d'utiliser @Inject pour configurer des applications qui n'appartiennent à aucun Framework particulier. Pour l'utiliser, ajoutez javax.inject-x.x.x.jar de la bibliothèque JSR.330 au chemin de classe.
 
Paramètres Maven
<dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
</dependency>
@Required
Il est utilisé pour écrire sur la méthode Setter et définir les propriétés requises. Pour l'utiliser, vous pouvez soit enregistrer la classe RequiredannotationBeanPostProcessor en tant que bean, soit ajouter le paramètre <context.annotation-config>.
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" >
  <!--Erreur si les propriétés suivantes ne sont pas définies-->
  <!-- <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());
Lorsque je l'exécute, j'obtiens l'erreur suivante:
>
#### **`Error`**
```ruby
   Property 'ename' is required for bean 'emp'
je suis un peu fatigué@Named @Order @À propos de PostConstruct demain ...
Recommended Posts