Tag: jsr299

如何使用不同的范围注入相同类的对象?

在简单性和正确性方面,注入具有不同范围的同一类对象的最佳方法是什么? 在servlet中,我想要注入具有不同范围的同一类的对象。 还是不知道是否要使用jsf。 简单性:为每个范围制作Qualifier和制作方法太多了; 在beans.xml创建一个接口,两个类以及添加和替换也是太多了; 使用Address#isCurrent()方法没有意义。 正确性:JSR299,3.11说: 不建议使用@Named作为注入点限定符。 还是不知道为什么。 虽然在注入点使用@Named可以与@ApplicationScoped和@RequestScoped一起使用,但不能与@SessionScoped 。 请参阅下面的命名代码段 。 在spring,这很容易: spring片段 名为代码段 /* Address class */ @Produces @RequestScoped @Named(value=”request”) public Address getNewAddress(){ return new Address(); } @Produces @SessionScoped @Named(value=”application”) public Address getCurrentAddress(){ return new Address(); } /* Servlet */ @Inject @RequestScoped @Named(“request”) private Address newAddress; @Inject @ApplicationScoped @Named(“application”) private Address currentAddress;