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

Google Guice之作用域

Google 开源的依赖注入库,比 Spring 更小更快!

基于 GWT/GIN/GUICE 的框架可扩展性

史上最好用的依赖注入框架Google Guice转