我有一个Spring启动应用程序,我有两个完全独立的角度项目。 最终用户的一个项目和管理员的另一个项目。 出于商业原因,我被迫将它们都作为两个不同的项目。我希望将这些项目打包到同一个WAR中,当用户点击最终用户的URL时,应该加载最终用户角度应用程序,当访问管理URL时,应该加载管理角度项目。
我知道Spring启动从/public
或/static
目录加载角度项目。但是,因为在我的情况下,我有两个不同的项目,我不能把它们放在同一个文件夹下,因为它们都有许多共同的文件名,包括index.html。
到目前为止,我已经完成了以下工作:
"public"
下创建了两个不同的文件夹"enduser"
和
"manage"
。 创建了一个控制器,它有两种方法:
@Controller
public class SampleController {
@RequestMapping(method = RequestMethod.GET, produces = "text/html", value
= "/enduser")
public String enduser() {
return "/enduser/index.html";
}
@RequestMapping(method = RequestMethod.GET, produces = "text/html", value
= "/admin")
public String admin() {
return "/admin/index.html";
}
}
然而,当我这样做时,只加载了index.html文件,而没有加载其他组件(我的意思是没有加载整个角度项目)。因此,不会加载相关的视图和样式等。
有没有人知道如何处理上述情况?谢谢。
答案 0 :(得分:0)
通过以下方式解决了该问题:
创建一个MVC控制器,为每个URL模式添加两种不同的方法。将每个项目的dist文件复制到静态文件夹下的一个单独的文件夹中。为每个项目添加一个不同的标签。这样,您的角度项目将无法在grunt服务因此,当您在grunt serve上运行时,必须将url设置为空,并且仅在进行构建时才将其设置为一个值。
答案 1 :(得分:0)
仅在解决方案下方发布它可能会对其他人有所帮助。
我正在使用两个不同的文件夹,在这些文件夹中,我从角度源代码放置dist文件夹的内容。 我有两个不同的基于角度的应用程序admin和public。
spring应用中放置编译后的角度代码的位置为:
/ src / main / resources / admin-app / *
(admin-index.html和其他静态 admin angluar项目中的文件)
/ src / main / resources / static / *
(index.html和公共角度项目中的其他静态文件)
春季启动配置
@EnableAutoConfiguration
public class AddCustomLocations {
@Bean
WebMvcConfigurer configurer () {
return new WebMvcConfigurerAdapter() {
@Override
public void addResourceHandlers (ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pages/**").
addResourceLocations("classpath:/admin-app/");
}
};
}
现在就是您按下http://localhost:8080的时候。它将加载公共角度应用程序。 而当你打 现在,当我尝试打开http://localhost:8080/pages/admin-index.html时 它将加载管理角度应用程序。
神奇的是,默认情况下静态文件夹中的所有文件都可以使用,但是如果我们要创建另一个文件夹来放置我们的静态文件。我们将不得不通知spring boot应用。 您还可以在静态文件夹内创建一个子文件夹。
公共和管理应用
您将必须这样点击网址
localhost:8080 / public / index.html 本地主机:8080 / public / admin-index.html
您将不需要为此创建上面的spring配置。