2014-08-28 125 views
2

我一直在研究Spring MVC 4我明白Spring有几个注释可以更快地开发。 This question and answer很好地解释了@Component,@Service,@Repository和@Controller之间的关系。我的问题是:从另一个项目调用spring @service

  1. 能否在@Service类可以从另一台机器被称为一个共同的WSDL服务?例如,从作为服务客户端的独立应用程序。

  2. 或者是@service注释只是为了标记类的用法吗?

感谢

回答

2

注释@Service只是@Component注解的特殊版本,其目的不是提供给执行远程访问。

正如文档中所述,@Service注释有助于在类路径扫描期间自动检测类(请参阅JavaDoc)并由某些工具处理。 另请参阅Spring's forum的说明。

+0

我可以同时使用@service和@webservice这两个注释吗? – Jessai 2014-08-28 22:03:00

+0

我不确定,但我会建议您使用@Service注释来注释服务实现,并将其注入端点实现(请查看http://docs.spring.io/spring/docs/current/spring-framework-参考/ HTML/remoting.html)。通过这种方式,您可以使用不同的远程技术公开您的服务实现。 – 2014-08-29 06:02:00

1

我不认为这可以通过使用被称为@Service你需要用注释@WebService类将其暴露在外界

1

不要混淆的javax @WebService同春@Service其定义here 。尽管两者都被称为服务@Service的目的只是:

该注释作为@Component的特化,从而允许实现类通过类路径扫描被自动检测。

那么,既然@WebService的WSDL(外部访问),一个@Service是Spring的内部使用。 如果您想从其他机器访问“服务”,则必须编写@WebService或使用@RequestMappingSpringMVC

3

用@Service注解的类中的方法不能从外部调用,但通常的做法是在图层顶部添加另一个通常称为facade的图层,其中您的类使用@Service注释(通常称为服务层)。使用这个外观,你可以用不同的方式暴露你的服务,如REST,SOAP等。

+0

现在很明显,我需要一个额外的图层来分隔功能。谢谢 – Jessai 2014-08-29 14:18:20

相关问题