我有一些來自外部庫的java對象,我需要在我的spring項目中注入它。問題是從庫中的類是不知道的任何彈簧API的類似於CDI的Spring中的POJO注入
如果我注入豆從圖書館服務使用@Autowired我越來越org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type
以下是我的服務類
@Path("/test")
public class TestService {
@Autowired
SomeOtherClass service;
@GET
public Response get(){
return Response.ok(service.someMethod()).build();
}
}
和以下是我從圖書館類,這是不知道春天
public class SomeOtherClass {
public String someMethod(){
return "Data from library";
}
}
,當我調用我的服務,我得到異常作爲
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.SomeOtherClass' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
有沒有辦法在spring中注入一個普通的Java對象,類似於注入的**CDI**
? 有一個選項可以定義applicationcontext.xml並在xml中定義SomeOtherClass並使用getBean,但我不想那樣做。有沒有其他的選擇?
注:
以下選項不能被考慮,因爲我從圖書館
到來類100's
Cannot use applicationcontext.xml
Cannot @Configuration @Bean to produce beans
。
你不需要'getBean'你只需要聲明一個'SomeOtherClass'的實例,那麼'@ Autowired'就可以工作。 Spring只會注入託管bean(就像CDI,如果某個東西不是託管bean,它也不會注入任何東西)。 –
然後不要使用spring ...你需要讓這些類被稱爲spring管理實例,如果你不這樣做將無法工作。如果你不能(或不會)使用基於xml或java的配置,那麼spring沒有太多的幫助。 (雖然你可以延伸春天來檢測/掃描那些類,但這需要一些有關內部和春天工作的知識)。 –