我有两个项目。我用Angular2 cli构建的Angular2应用程序和只为Angular2应用程序服务的Spring Boot应用程序。我用ng build
构建Angular2应用程序,它会生成一个dist
文件夹。然后,我将dist
文件夹的内容放在Spring Boot应用程序的src/main/resources/static
中。
我的Spring启动应用程序有两个文件。
Spring Boot应用程序类:
@SpringBootApplication
public class SpringBoot extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBoot.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SpringBoot.class, args);
}
}
及其应用。属性文件:
server.contextPath=/
server.port=80
它工作得很好,但是如果我转到一个url并点击刷新按钮,我会看到白标签错误页面
。我知道这是因为URL没有提供索引。html
当它们与资源文件不匹配时。
我如何配置我的Spring Boot应用程序来提供索引。html
如果url与资源文件不匹配?
在这里你可以找到我的Spring Boot 2和Angular 6入门项目。
Spring Boot应用程序是使用Spring Initializer创建的,Angular应用程序是使用Angular CLI创建的。
你的索引是正确的。对于Spring未知的endpoint,需要返回html
。然后安排Angular应用程序管理未知路线。
我使用WebMVCConfigureAdapter
处理这种情况。还可以将静态内容文件类型放在这里。
添加一个config
目录,并在其中添加一个包含以下内容的Java文件WebMvcConfig
(例如):
package com.yourdomain.yourapp.config;
import org.springframework.boot.autoconfigure.web.ResourceProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.resource.PathResourceResolver;
import java.io.IOException;
import javax.inject.Inject;
@Configuration
@EnableConfigurationProperties({ ResourceProperties.class })
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Inject
private ResourceProperties resourceProperties = new ResourceProperties();
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
Integer cachePeriod = resourceProperties.getCachePeriod();
final String[] staticLocations = resourceProperties.getStaticLocations();
final String[] indexLocations = new String[staticLocations.length];
for (int i = 0; i < staticLocations.length; i++) {
indexLocations[i] = staticLocations[i] + "index.html";
}
registry.addResourceHandler(
"/**/*.css",
"/**/*.html",
"/**/*.js",
"/**/*.json",
"/**/*.bmp",
"/**/*.jpeg",
"/**/*.jpg",
"/**/*.gif",
"/**/*.ico",
"/**/*.png",
"/**/*.ttf",
"/**/*.wav",
"/**/*.mp3",
"/**/*.eot",
"/**/*.svg",
"/**/*.woff",
"/**/*.woff2",
"/**/*.map"
)
.addResourceLocations(staticLocations)
.setCachePeriod(cachePeriod);
registry.addResourceHandler("/**")
.addResourceLocations(indexLocations)
.setCachePeriod(cachePeriod)
.resourceChain(true)
.addResolver(new PathResourceResolver() {
@Override
protected Resource getResource(String resourcePath, Resource location) throws IOException {
return location.exists() && location.isReadable() ? location : null;
}
});
}
}
我想你还必须指定组件扫描的配置包。也许先试试不,看看它是否有效。
@SpringBootApplication
@ComponentScan( basePackages = { "com.yourdomain.yourapp.config" })
public class SpringBoot extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringBoot.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SpringBoot.class, args);
}
}
以防你失去依赖。这就是我的构建中的内容。格雷德尔
:
dependencies {
compile group: 'org.springframework.boot', name: 'spring-boot-starter-web'
compile group: 'javax.inject', name: 'javax.inject', version: '1'
optional group: 'org.springframework.boot', name: 'spring-boot-configuration-processor'
providedRuntime group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat'
testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test'
}
希望这有帮助:-)
我有一个Spring Boot项目,使用Jersey作为我的REST服务,并使用AngularJS进行我的前端开发。当我在不使用任何控制器的情况下运行它并转到index.html(位于resource/statig/index.html中)时,它运行得很好。当我添加一个控制器时,它呈现给出字符串“index.html”作为输出。Spring Boot配置: 球衣配置: 控制器类:
3)引用了mongeez.location={myDir}/db中的位置 我在启动应用程序时处于异常之下 由:com.mongodb.mongoCommandException引起:命令失败,错误为59(CommandNotFound):“在服务器本地主机:27017上没有这样的命令:'$eval'.完整的响应是{“ok”:0.0,“errmsg”:“no suck command:'$eval'
我是Spring Boot和MongoDb的新手。尝试使用Mongo存储库和Spring Boot的一些示例。但在浏览了一些文档后发现,Mongo模板是一个更好的选择。无法使用Mongo模板示例获得正确的Spring Boot。 > 有人能帮我举个同样的例子吗? 在尝试Mongo模板时,我们是否需要创建用户定义的存储库界面并扩展存储库或CRUD存储库?
我正在使用jasypt spring boot starter:1.14和spring-boot-2.0.0。M2 如果application.properties在类路径(src/main/资源)中可用,它工作得非常好 即使应用程序运行正常,Spring boot也能正常工作。属性放在运行spring boot jar的文件夹中(默认情况下,它在当前文件夹中查找application.prope
我想在我的应用程序中使用LDAP,以便进行身份验证 在前面的配置中,我使用数据库进行身份验证 不,我想使用ldap进行身份验证 我修改了security-app-context.xml 但是当我测试时,我有这样一个错误: LDAP://192.168.0.88:389 基本DN DC=部长,DC=FR 身份验证搜索筛选器 (&(objectclass=person)(mail=@email_add
我正在尝试理解Spring boot中的松散绑定我已经查看了https://docs . Spring . io/Spring-boot/docs/current/reference/html/boot-features-external-config . html # boot-features-external-config-relaxed-binding但是我认为我缺少了一些东西如果我有一个