在我发现的所有有关使用Angular的Spring / BOOT的集成教程中(也尝试过搜索文档)(并且经常使用gradle),都在谈论如何编译Angular以进行生产以及如何在开发中使用它。
我认为我发现的所有内容都表明您在一个端口(默认8080)上运行服务器(Spring BOOT),而在第二个端口(默认4200)上进行开发“ ng serve”则运行客户端(Angular)。
因此,基本上在开发中,这意味着您有2个单独的服务器,甚至不需要彼此了解。在所有教程中,Angular都将Spring用作REST JPA存储库(与上一句话相同)。
我的问题是-我想让他们在开发环境中一起工作的任何地方,都使用了一个技巧,看起来像这样:
@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600)
@RestController
@RequestMapping({"/api"})
public class SomeController
因此,为了使Spring允许Angular 4200服务器实际工作,我们将CrossOrigin设置为该端口。虽然在开发中它绝对好,但是当我们打包Angular客户端进行生产时,就不需要该批注-Spring是否不应该负责从其端口(8080)提供内容?不再有2台服务器,只有1台。
最后我的问题是:
这里正确的方法是什么?我真的需要@CrossOrigin
政策才能在开发人员中工作吗?如果是这样,我可以在生产中删除它吗? Spring是否有一些巧妙的技巧将其标记为“ devOnly”?
答案 0 :(得分:1)
Spring确实具有@Profile
批注。
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html
例如,如果您在本地计算机上使用“ dev”配置文件,则可以使用@Profile("dev")
仅在使用dev配置文件时加载bean。
您可能不想使用某些配置来注释每个控制器类。
因此,创建一个配置类,在其中您可以配置仅开发人员的东西,并使用@Profile("dev")
批注对其进行批注。