Skip to content

Commit 88ad695

Browse files
committed
ApiBoot Logging Admin UI 自动化配置、属性文件添加
1 parent f4b3d93 commit 88ad695

File tree

4 files changed

+214
-64
lines changed

4 files changed

+214
-64
lines changed

api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/logging/admin/ApiBootLoggingAdminAutoConfiguration.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.minbox.framework.api.boot.autoconfigure.logging.admin;
1919

20+
import org.minbox.framework.api.boot.autoconfigure.logging.admin.ui.ApiBootLoggingAdminUiAutoConfiguration;
2021
import org.minbox.framework.api.boot.plugin.logging.admin.endpoint.LoggingEndpoint;
2122
import org.minbox.framework.api.boot.plugin.logging.admin.endpoint.LoggingRequestMappingHandlerMapping;
2223
import org.minbox.framework.api.boot.plugin.logging.admin.listener.ReportLogJsonFormatListener;

api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/logging/admin/ApiBootLoggingAdminUiAutoConfiguration.java

Lines changed: 0 additions & 64 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
/*
2+
* Copyright [2019] [恒宇少年 - 于起宇]
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package org.minbox.framework.api.boot.autoconfigure.logging.admin.ui;
19+
20+
import org.minbox.framework.api.boot.plugin.logging.admin.ui.HomepageForwardingFilter;
21+
import org.minbox.framework.api.boot.plugin.logging.admin.ui.LoggingAdminUiEndpoint;
22+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
23+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
24+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
25+
import org.springframework.context.ApplicationContext;
26+
import org.springframework.context.annotation.Bean;
27+
import org.springframework.context.annotation.Configuration;
28+
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
29+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
30+
import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
31+
import org.thymeleaf.templatemode.TemplateMode;
32+
33+
import java.io.IOException;
34+
import java.nio.charset.StandardCharsets;
35+
import java.util.List;
36+
37+
import static java.util.Arrays.asList;
38+
39+
/**
40+
* ApiBoot Logging Admin Ui Configuration
41+
*
42+
* @author:恒宇少年 - 于起宇
43+
* <p>
44+
* DateTime:2019-07-26 15:08
45+
* Blog:http://blog.yuqiyu.com
46+
* WebSite:http://www.jianshu.com/u/092df3f77bca
47+
* Gitee:https://gitee.com/hengboy
48+
* GitHub:https://github.com/hengboy
49+
*/
50+
@Configuration
51+
@EnableConfigurationProperties(ApiBootLoggingAdminUiProperties.class)
52+
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
53+
public class ApiBootLoggingAdminUiAutoConfiguration implements WebMvcConfigurer {
54+
/**
55+
* ApiBoot Logging Admin Ui Resource Handler Prefix
56+
*/
57+
private static final String RESOURCE_PREFIX = "/**";
58+
/**
59+
* ApiBoot Logging Admin Template Html Suffix
60+
*/
61+
private static final String TEMPLATE_SUFFIX = ".html";
62+
/**
63+
* Default Ui Router List
64+
*/
65+
private static final List<String> DEFAULT_UI_ROUTES = asList(
66+
"/about/**",
67+
"/applications/**",
68+
"/journal/**",
69+
"/wallboard/**"
70+
);
71+
/**
72+
* Application Context
73+
*/
74+
private ApplicationContext applicationContext;
75+
/**
76+
* ApiBoot Logging Admin Ui Properties
77+
*/
78+
private ApiBootLoggingAdminUiProperties adminUiProperties;
79+
80+
public ApiBootLoggingAdminUiAutoConfiguration(ApplicationContext applicationContext, ApiBootLoggingAdminUiProperties adminUiProperties) {
81+
this.applicationContext = applicationContext;
82+
this.adminUiProperties = adminUiProperties;
83+
}
84+
85+
/**
86+
* Configuration Resource Handler
87+
* add "api-boot-logging-admin-ui" resource path handler
88+
*
89+
* @param registry ResourceHandlerRegistry
90+
*/
91+
@Override
92+
public void addResourceHandlers(ResourceHandlerRegistry registry) {
93+
registry.addResourceHandler(RESOURCE_PREFIX).addResourceLocations(this.adminUiProperties.getResourceLocations());
94+
}
95+
96+
/**
97+
* Config thymeleaf Template Resolver
98+
*
99+
* @return SpringResourceTemplateResolver
100+
*/
101+
@Bean
102+
public SpringResourceTemplateResolver adminTemplateResolver() {
103+
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
104+
resolver.setApplicationContext(this.applicationContext);
105+
resolver.setPrefix(this.adminUiProperties.getTemplateLocation());
106+
resolver.setSuffix(TEMPLATE_SUFFIX);
107+
resolver.setTemplateMode(TemplateMode.HTML);
108+
resolver.setCharacterEncoding(StandardCharsets.UTF_8.name());
109+
resolver.setCacheable(this.adminUiProperties.isCacheTemplates());
110+
resolver.setOrder(10);
111+
resolver.setCheckExistence(true);
112+
return resolver;
113+
}
114+
115+
/**
116+
* Home Page Forwarding Filter
117+
*
118+
* @return HomepageForwardingFilter
119+
* @throws IOException Io Exception
120+
*/
121+
@Bean
122+
@ConditionalOnMissingBean
123+
public HomepageForwardingFilter homepageForwardFilter() throws IOException {
124+
return new HomepageForwardingFilter("/", DEFAULT_UI_ROUTES);
125+
}
126+
127+
/**
128+
* Logging Admin Ui Endpoint
129+
* The ability to provide logging admin data to the public
130+
*
131+
* @return LoggingAdminUiEndpoint
132+
*/
133+
@Bean
134+
@ConditionalOnMissingBean
135+
public LoggingAdminUiEndpoint loggingAdminUiEndpoint() {
136+
return new LoggingAdminUiEndpoint(
137+
LoggingAdminUiEndpoint.Settings.builder()
138+
.brand(adminUiProperties.getBrand())
139+
.title(adminUiProperties.getTitle())
140+
.routes(DEFAULT_UI_ROUTES)
141+
.build()
142+
);
143+
}
144+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/*
2+
* Copyright [2019] [恒宇少年 - 于起宇]
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*
16+
*/
17+
18+
package org.minbox.framework.api.boot.autoconfigure.logging.admin.ui;
19+
20+
import lombok.Data;
21+
import org.springframework.boot.context.properties.ConfigurationProperties;
22+
import org.springframework.context.annotation.Configuration;
23+
24+
import static org.minbox.framework.api.boot.autoconfigure.logging.admin.ui.ApiBootLoggingAdminUiProperties.API_BOOT_LOGGING_ADMIN_UI_PREFIX;
25+
26+
/**
27+
* ApiBoot Logging Admin Ui Properties
28+
*
29+
* @author:恒宇少年 - 于起宇
30+
* <p>
31+
* DateTime:2019-07-31 17:09
32+
* Blog:http://blog.yuqiyu.com
33+
* WebSite:http://www.jianshu.com/u/092df3f77bca
34+
* Gitee:https://gitee.com/hengboy
35+
* GitHub:https://github.com/hengboy
36+
*/
37+
@Configuration
38+
@ConfigurationProperties(prefix = API_BOOT_LOGGING_ADMIN_UI_PREFIX)
39+
@Data
40+
public class ApiBootLoggingAdminUiProperties {
41+
/**
42+
* ApiBoot logging properties config prefix
43+
*/
44+
public static final String API_BOOT_LOGGING_ADMIN_UI_PREFIX = "api.boot.logging.admin.ui";
45+
/**
46+
* ApiBoot Logging Admin Ui Resource Locations
47+
*/
48+
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {"classpath:/META-INF/api-boot-logging-admin-ui/"};
49+
/**
50+
* Locations of ApiBoot Logging Admin ui resources.
51+
*/
52+
private String[] resourceLocations = CLASSPATH_RESOURCE_LOCATIONS;
53+
/**
54+
* Locations of ApiBoot Logging Admin ui template.
55+
*/
56+
private String templateLocation = CLASSPATH_RESOURCE_LOCATIONS[0];
57+
/**
58+
* Wether the thymeleaf templates should be cached.
59+
*/
60+
private boolean cacheTemplates = true;
61+
/**
62+
* Page Title
63+
*/
64+
private String title = "ApiBoot Logging Admin";
65+
/**
66+
* ApiBoot Logo
67+
*/
68+
private String brand = "<img src=\"assets/img/apiboot-white.png\">";
69+
}

0 commit comments

Comments
 (0)