0

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

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

4

2 回答 2

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 {

....
}

有关更多信息,请参阅文档类路径扫描和托管组件

于 2013-09-09T11:34:08.920 回答
0

您可以通过配置上面提到的 Spring 上下文或在这个不错的教程中解释来做到这一点。

许多库可以帮助您将 GWT RPC 机制与 Spring 集成,即gwtrpc-springspring4gwt

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

于 2013-09-11T06:59:22.450 回答