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 une
demandeet retourne request-renvoie un bean par
objet de requête HTTPsession-renvoie un bean par
objet 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