从Spring启动加载多个Angular项目

时间:2016-01-07 18:59:14

标签: java angularjs spring spring-mvc spring-boot

我有一个Spring启动应用程序,我有两个完全独立的角度项目。 最终用户的一个项目和管理员的另一个项目。 出于商业原因,我被迫将它们都作为两个不同的项目。我希望将这些项目打包到同一个WAR中,当用户点击最终用户的URL时,应该加载最终用户角度应用程序,当访问管理URL时,应该加载管理角度项目。

我知道Spring启动从/public/static目录加载角度项目。但是,因为在我的情况下,我有两个不同的项目,我不能把它们放在同一个文件夹下,因为它们都有许多共同的文件名,包括index.html。

到目前为止,我已经完成了以下工作:

  1. "public"下创建了两个不同的文件夹"enduser"和     "manage"
  2. 创建了一个控制器,它有两种方法:

    @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";
    }
    }
    
  3. 然而,当我这样做时,只加载了index.html文件,而没有加载其他组件(我的意思是没有加载整个角度项目)。因此,不会加载相关的视图和样式等。

    有没有人知道如何处理上述情况?谢谢。

2 个答案:

答案 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配置。