我计划改进已编写的代码,这是一个GWT应用程序,需要在GAE上部署。
依赖注入由Guice和Gin负责。我想知道我是否可以在后端使用Spring。(这是一种严格的要求)。
我让客户端代码正常工作并向我的服务器代码发送请求。在服务器代码中的“服务”类中,我想为DAO层执行Spring注入。
但遗憾的是,即使我进行@Autowired
注射,DAO引用也为空。这导致NPE。
我知道你只能在spring上下文中注入pring托管bean。所以我尝试在服务器端类上添加一个注释@Service,它从客户端代码接收RPC请求。该课程如下所示:
@Path(ResourcesPath.PERSON)
@Produces(MediaType.APPLICATION_JSON)
@Service
public class PersonResource {
private Logger logger;
@Autowired
PersonDAO dao;
@Inject
PersonResource(Logger logger) {
this.logger = logger;
}
}
我希望有类似的东西
@Path(ResourcesPath.PERSON)
@Produces(MediaType.APPLICATION_JSON)
public class PersonResource {
private Logger logger;
@Inject
PersonResource(Logger logger) {
this.logger = logger;
}
}
感谢您的帮助。请给我一些可以解决这个问题的建议。
答案 0 :(得分:1)
要在配置弹簧中使用@Service注释,您必须像这样配置上下文
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="org.example"/>
</beans>
Spring将扫描包以找到组件注释。
如果你使用java 5+,你可以使用这样的java配置:
@Configuration
@ComponentScan({"org.example"})
public class ExampleConfig {
....
}
有关更多信息,请参阅文档Classpath scanning and managed components。
答案 1 :(得分:0)
您可以通过如上所述配置Spring上下文或在this nice tutorial中解释。
许多库可以帮助您将GWT RPC机制与Spring集成, 即gwtrpc-spring或spring4gwt
可以在网上找到更多示例。