如何注入@produces方法

时间:2015-08-22 04:33:07

标签: spring spring-mvc dependency-injection jboss cdi

我是注释的新手。

我在类中使用@produces作为方法

@Produces
@Named("getCTIs")
public Map<String,TreeMap<String, List<String>>> getCTIs(){}

现在我想注入上面的bean。为此,我这样做:

@Inject
private Map<String,TreeMap<String, List<String>>> cTIs;

但是我收到以下错误消息

No qualifying bean of type [java.util.TreeMap] found for dependency
[map with value type java.util.TreeMap]: expected at least 1 bean which
qualifies as autowire candidate for this dependency.

我是框架的新手。如果不注入,你能告诉我如何使用上面的bean。我想在servlet中使用bean。在此先感谢:)

P.S。:我不想将@Produces更改为@Bean。

1 个答案:

答案 0 :(得分:3)

使用@Bean注释来注册bean。

@Bean
@Named("getCTIs")
public Map<String,TreeMap<String, List<String>>> getCTIs(){}

然后您可以使用@Autowired@Inject连接bean。

@Produces注释用于指定资源可以生成并发送回客户端的MIME媒体类型或表示。

Spring MVC框架支持Producible Media Types作为控制器@RequestMapping的属性。

如果您还想使用@Produces,那么您可以保留原样,并使用@Configuration@Bean注释将其设为bean,如下所示:

@Configuration
public class XYZ {

     @Produces
     @Bean
     @Named("getCTIs")
     public Map<String,TreeMap<String, List<String>>> getCTIs(){...}

}

通过@Configuration

阅读bootstrapping AnnotationConfigApplicationContext课程