Google Guice、Google Gin 和 Spring
Posted
技术标签:
【中文标题】Google Guice、Google Gin 和 Spring【英文标题】:Google Guice, Google Gin and Spring 【发布时间】:2013-09-09 11:12:54 【问题描述】:我计划改进一个已经编写好的代码,它是一个 GWT 应用程序,需要部署在 GAE 上。
Guice 和 Gin 负责依赖注入。我想知道我是否可以在后端使用 Spring。(这是一个严格的要求)。
我的客户端代码正常工作并向我的服务器代码发送请求,在位于服务器代码中的“服务”类中,我想为 DAO 层进行 Spring 注入。
但不幸的是,即使我执行@Autowired
注入,DAO 引用也是空的。这会导致 NPE。
我知道您只能在 spring 上下文中注入 pring 托管 bean。所以我尝试在从客户端代码接收 RPC 请求的服务器端类上放置一个注释 @Service。该类如下所示:
@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;
感谢您的帮助。请给我一些可以解决这个问题的建议。
【问题讨论】:
【参考方案1】:要将 @Service 注释与配置 spring 一起使用,您必须像这样配置上下文
<?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。
【讨论】:
【参考方案2】:您可以通过如上所述配置 Spring 上下文或在this nice tutorial 中解释来做到这一点。
许多库可以帮助您将 GWT RPC 机制与 Spring 集成, 即gwtrpc-spring或spring4gwt
可以在网上找到更多示例。
【讨论】:
以上是关于Google Guice、Google Gin 和 Spring的主要内容,如果未能解决你的问题,请参考以下文章
Guice 学习常量和属性的注入( Constant and Property Inject)
Google Guice 与 JSR-299 CDI / Weld