我正在使用Spring 4.2.4和MyFaces 2.2.9,Java 1.8。
我按照这个例子创建了一个工厂模式; Spring: implementing the Factory pattern
我们有界面;
package com.jsf2.strategy;
public interface PrintStrategyFactory {
IPrintStrategy getStrategy(String strategyName);
}
在 applicationContext.xml ;
中<bean id="printStrategyFactory" class="org.springframework.beans.factory.config.ServiceLocatorFactoryBean">
<property name="serviceLocatorInterface" value="com.jsf2.strategy.PrintStrategyFactory" />
</bean>
<alias name="A4Portrait" alias="A4P" />
<alias name="A4Landscape" alias="A4L" />
<alias name="A5Portrait" alias="A5P" />
<alias name="A5Landscape" alias="A5L" />
<alias name="A4Portrait" alias="DEFAULT" />
所以PrintStrategyFactory只有没有具体的类,只有接口。
我正在尝试使用CDI语法来注入接口;
@Component
@Scope("singleton")
public class TestBean {
@Inject // I get warning here
@Autowired // NO WARNING
private PrintStrategyFactory printStrategyFactory;
@PostConstruct
private void init() {
. . . . . .
@Autowired; 不显示警告。
使用@Inject显示;
没有豆有资格注射到注射点[JSR-299§5.2.1]
在运行时,两种方式都有效,但我正在尝试使用CDI语法。
如果我添加一个实现接口的Concrete类,警告就会消失。
我应该只是压制警告还是有替代解决方案?