Google Guice,Google Gin和Spring

时间:2013-09-09 11:12:55

标签: spring gwt guice gin

我计划改进已编写的代码,这是一个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;
}
}

感谢您的帮助。请给我一些可以解决这个问题的建议。

2 个答案:

答案 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-springspring4gwt

可以在网上找到更多示例。