发布网友 发布时间:2022-04-24 04:52
共2个回答
热心网友 时间:2022-04-26 13:38
app后端用什么代码做都可以,只要把你需要的值通过接口传过去就可以了,restful这是一种开发规范,比如你之前的路径是test.html?id=一,用这个开发规范后,可以写成test/一.html,就是说给弄成文件夹模式的,不过作为后台,不用涉及推广,后台用这
热心网友 时间:2022-04-26 14:56
1. 创建您自己的故障分析器
FailureAnalyzer是在启动时拦截异常并将其转换为人类可读的消息的好方法,该消息包装在FailureAnalysis. Spring Boot 为应用程序上下文相关的异常、JSR-303 验证等提供了这样的分析器。您也可以创建自己的。
AbstractFailureAnalyzer是一个方便的扩展,FailureAnalyzer用于检查要处理的异常中是否存在指定的异常类型。您可以从中扩展,以便您的实现只有在它实际存在时才有机会处理异常。如果无论出于何种原因,您无法处理异常,请返回null给另一个实现处理异常的机会。
FailureAnalyzer实现必须在META-INF/spring.factories. 以下示例注册ProjectConstraintViolationFailureAnalyzer:
org.springframework.boot.diagnostics.FailureAnalyzer=\
com.example.ProjectConstraintViolationFailureAnalyzer
2. 自动配置故障排除
Spring Boot 自动配置会尽力“做正确的事”,但有时事情会失败,而且很难说出原因。
ConditionEvaluationReport在任何 Spring Boot 中都有一个非常有用的可用ApplicationContext。如果您启用DEBUG日志输出,您可以看到它。如果您使用spring-boot-actuator(请参阅执行器章节),还有一个conditions端点以 JSON 格式呈现报告。使用该端点来调试应用程序并查看 Spring Boot 在运行时添加了哪些功能(以及哪些尚未添加)。
通过查看源代码和 Javadoc,可以回答更多问题。阅读代码时,请记住以下经验法则:
寻找被调用的类*AutoConfiguration并阅读它们的来源。请特别注意@Conditional*注释以了解它们启用了哪些功能以及何时启用。添加--debug到命令行或系统属性-Ddebug以在控制台上获取在您的应用程序中做出的所有自动配置决策的日志。在启用了执行器的正在运行的应用程序中,查看conditions端点(/actuator/conditions或等效的 JMX)以获取相同的信息。
查找属于@ConfigurationProperties(例如ServerProperties)的类并从中读取可用的外部配置选项。该@ConfigurationProperties注释具有一个name充当前缀外部性能属性。因此,ServerProperties拥有prefix="server"和它的配置性能server.port,server.address以及其他。在启用了执行器的正在运行的应用程序中,查看configprops端点。
寻找bind方法的使用,以轻松的方式Binder显式地从 中提取配置值Environment。它通常与前缀一起使用。
寻找@Value直接绑定到Environment.
寻找@ConditionalOnExpression根据 SpEL 表达式打开和关闭功能的注释,通常使用从Environment.
3. 在开始之前自定义环境或 ApplicationContext
A SpringApplicationhasApplicationListeners和ApplicationContextInitializersthat 用于将自定义应用到上下文或环境。Spring Boot 从META-INF/spring.factories. 注册其他自定义的方法不止一种:
以编程方式,每个应用程序,通过在运行之前调用addListeners和addInitializers方法SpringApplication。
声明性地,每个应用程序,通过设置context.initializer.classes或context.listener.classes属性。
声明性地,对于所有应用程序,通过添加一个META-INF/spring.factories并打包应用程序都用作库的 jar 文件。
该SpringApplication发送一些特殊ApplicationEvents的听众(背景下创造了一些甚至更早),然后注册了在公布的事件*ApplicationContext为好。有关完整列表,请参阅“ Spring Boot 功能”部分中的“应用程序事件和侦听器”。
还可以Environment在应用程序上下文刷新之前使用自定义EnvironmentPostProcessor。每个实现都应该在 中注册META-INF/spring.factories,如以下示例所示:
org.springframework.boot.env.EnvironmentPostProcessor=com.example.YourEnvironmentPostProcessor该实现可以加载任意文件并将它们添加到Environment. 例如,以下示例从类路径加载 YAML 配置文件:
import java.io.IOException;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.util.Assert;
public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
private final YamlPropertySourceLoader loader = new YamlPropertySourceLoader();
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
Resource path = new ClassPathResource("com/example/myapp/config.yml");
PropertySource<?> propertySource = loadYaml(path);
environment.getPropertySources().addLast(propertySource);
}
private PropertySource<?> loadYaml(Resource path) {
Assert.isTrue(path.exists(), () -> "Resource " + path + " does not exist");
try {
return this.loader.load("custom-resource", path).get(0);
}
catch (IOException ex) {
throw new IllegalStateException("Failed to load yaml configuration from " + path, ex);
}
}
}
4. 构建 ApplicationContext 层次结构(添加父上下文或根上下文)
您可以使用ApplicationBuilder该类来创建父/子ApplicationContext层次结构。见“的features.html中的”“春秋引导功能”部分以获取更多信息。
5. 创建非 Web 应用程序
并非所有 Spring 应用程序都必须是 Web 应用程序(或 Web 服务)。如果你想在一个main方法中执行一些代码,但同时也引导一个 Spring 应用程序来设置要使用的基础设施,你可以使用SpringApplicationSpring Boot的特性。ASpringApplication改变它的ApplicationContext类,这取决于它是否认为它需要一个 Web 应用程序。您可以帮助它做的第一件事是将与服务器相关的依赖项(例如 servlet API)从类路径中移除。如果您不能这样做(例如,您从同一代码库运行两个应用程序),那么您可以显式调用setWebApplicationType(WebApplicationType.NONE)您的SpringApplication实例或设置applicationContextClass属性(通过 Java API 或使用外部属性)。您希望作为业务逻辑运行的应用程序代码可以实现为CommandLineRunner并作为@Bean定义放入上下文中。