我尝试了@Autowired,但是它不起作用。
有我的豆子:
@Bean(name = "getModels")
public JSONObject getModels() throws ClassNotFoundException {
return scannerService.getModels(Test.class , Pc.class);
}
并且有我的控制器
@RequestMapping(value = "/classes", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public String getAdminParams() throws JSONException, ClassNotFoundException {
ApplicationContext context = new
AnnotationConfigApplicationContext(CreateModels.class);
CreateModels createModels = (CreateModels) context.getBean("getModels");
return createModels.toString() ;
}
答案 0 :(得分:1)
这可能是您应该创建和使用bean的方式:
@Service
public class ModelService{ // or whatever
private final ScannerService scannerService;
@Autowired
public ModelService(ScannerService scannerService){
this.scannerService = scannerService;
}
public JSONObject getModels() throws ClassNotFoundException{
return scannerService.getModels(Test.class, Pc.class);
}
}
然后在您的控制器中注入ModelService
(或您输入的名称):
// your annotations
public class Controller{ // your name
private final ModelService modelService;
public Controller(ModelService modelService){
this.modelService = modelService;
}
@RequestMapping(value = "/classes", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public String getAdminParams() throws JSONException, ClassNotFoundException{
return modelService.getModels().toString();
}
}
这当然仅仅是一个示例,您必须对其进行调整以使其与当前代码一起使用。但是通常,将值(例如来自scannerService.getModels()
的值)提供为@Bean
是一个非常糟糕的主意。更好的解决方法是创建一个Holder对象。
答案 1 :(得分:0)
我解决了
有豆子
@Bean("models")
public JSONObject getModels() throws ClassNotFoundException {
return scannerService.getModels(Test.class , Pc.class);
}
然后将其注入控制器
@Autowired
@Qualifier("models")
JSONObject models;