我计划改进已经编写的代码,这是一个GWT应用程序,需要部署在GAE上。
依赖注入由Guice和Gin负责。我想知道我是否可以在后端使用 Spring。(这是一个严格的要求)。
我让客户端代码正常工作并向我的服务器代码发送请求,在服务器代码中的"服务"类中,我想为 DAO 层进行 Spring 注入。
但不幸的是,即使我进行@Autowired
注入,DAO 引用也是空的。这将导致 NPE。
我知道您只能在春季环境中注入管理豆。所以我尝试在服务器端类上放置一个注释@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;
}
}
谢谢你的帮助。请向我建议一些可以解决这个问题的东西。
要将@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 {
....
}
有关详细信息,请参阅文档类路径扫描和托管组件。
你可以通过配置Spring上下文来做到这一点,如上所述,或者在这个不错的教程中解释。
许多库可以帮助您将GWT RPC机制与Spring集成,即 GWTRPC-Spring 或 spring4GWT
更多的例子可以在网络上找到。