Skip to content

Commit 5152fd4

Browse files
committed
🚀 集成Grace操作日志框架
1 parent 696e975 commit 5152fd4

File tree

6 files changed

+153
-1
lines changed

6 files changed

+153
-1
lines changed

api-boot-project/api-boot-autoconfigure/pom.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,21 @@
182182
<artifactId>ssh-agent</artifactId>
183183
<optional>true</optional>
184184
</dependency>
185+
<dependency>
186+
<groupId>org.minbox.framework</groupId>
187+
<artifactId>grace-core</artifactId>
188+
<optional>true</optional>
189+
</dependency>
190+
<dependency>
191+
<groupId>org.minbox.framework</groupId>
192+
<artifactId>grace-expression</artifactId>
193+
<optional>true</optional>
194+
</dependency>
195+
<dependency>
196+
<groupId>org.minbox.framework</groupId>
197+
<artifactId>grace-processor</artifactId>
198+
<optional>true</optional>
199+
</dependency>
185200

186201
<!--Others-->
187202
<dependency>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.minbox.framework.api.boot.autoconfigure.grace;
2+
3+
import org.minbox.framework.grace.core.GraceRecorderAopBeanDefinitionRegistrar;
4+
import org.minbox.framework.grace.core.operator.GraceLoadOperatorService;
5+
import org.minbox.framework.grace.expression.ExpressionFunctionFactory;
6+
import org.minbox.framework.grace.expression.annotation.GraceFunction;
7+
import org.minbox.framework.grace.expression.annotation.GraceFunctionDefiner;
8+
import org.minbox.framework.grace.processor.GraceLogStorageProcessor;
9+
import org.springframework.beans.factory.BeanFactory;
10+
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
11+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
12+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
13+
import org.springframework.context.annotation.Bean;
14+
import org.springframework.context.annotation.Configuration;
15+
import org.springframework.context.annotation.Import;
16+
import org.springframework.context.annotation.Primary;
17+
import org.springframework.util.ObjectUtils;
18+
19+
import java.util.List;
20+
21+
/**
22+
* Grace操作日志框架自动化配置类
23+
*
24+
* @author 恒宇少年
25+
*/
26+
@Configuration
27+
@ConditionalOnClass({ExpressionFunctionFactory.class, GraceLogStorageProcessor.class, GraceLoadOperatorService.class})
28+
@Import(GraceRecorderAopBeanDefinitionRegistrar.class)
29+
@EnableConfigurationProperties(ApiBootGraceLogProperties.class)
30+
public class ApiBootGraceLogAutoConfiguration {
31+
private BeanFactory beanFactory;
32+
private ApiBootGraceLogProperties graceLogProperties;
33+
34+
public ApiBootGraceLogAutoConfiguration(BeanFactory beanFactory, ApiBootGraceLogProperties graceLogProperties) {
35+
this.beanFactory = beanFactory;
36+
this.graceLogProperties = graceLogProperties;
37+
}
38+
39+
/**
40+
* 创建表达式函数工厂类实例
41+
* 该类实例化后会自动加载指定"Package"内配置{@link GraceFunctionDefiner}的类
42+
* 并获取类内配置{@link GraceFunction}的函数列表
43+
*
44+
* @return {@link ExpressionFunctionFactory}
45+
*/
46+
@Bean
47+
@Primary
48+
public ExpressionFunctionFactory expressionFunctionFactory() {
49+
List<String> basePackageList = this.graceLogProperties.getFunctionScanBasePackages();
50+
if (ObjectUtils.isEmpty(basePackageList)) {
51+
basePackageList = AutoConfigurationPackages.get(this.beanFactory);
52+
}
53+
return new ExpressionFunctionFactory(basePackageList);
54+
}
55+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.minbox.framework.api.boot.autoconfigure.grace;
2+
3+
import lombok.Data;
4+
import org.springframework.boot.context.properties.ConfigurationProperties;
5+
import org.springframework.context.annotation.Configuration;
6+
7+
import java.util.List;
8+
9+
import static org.minbox.framework.api.boot.autoconfigure.grace.ApiBootGraceLogProperties.API_BOOT_GRACE_PREFIX;
10+
11+
/**
12+
* Grace框架自动化配置属性类
13+
*
14+
* @author 恒宇少年
15+
*/
16+
@Configuration
17+
@ConfigurationProperties(prefix = API_BOOT_GRACE_PREFIX)
18+
@Data
19+
public class ApiBootGraceLogProperties {
20+
public static final String API_BOOT_GRACE_PREFIX = "api.boot.grace";
21+
/**
22+
* 配置表达式函数扫描的基础包列表
23+
*
24+
* @see org.minbox.framework.grace.expression.annotation.GraceFunctionDefiner
25+
* @see org.minbox.framework.grace.expression.annotation.GraceFunction
26+
*/
27+
private List<String> functionScanBasePackages;
28+
}

api-boot-project/api-boot-autoconfigure/src/main/resources/META-INF/spring.factories

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
2525
org.minbox.framework.api.boot.autoconfigure.tools.ApiBootToolsAutoConfiguration,\
2626
org.minbox.framework.api.boot.autoconfigure.message.pipe.client.MessagePipeClientAutoConfiguration,\
2727
org.minbox.framework.api.boot.autoconfigure.message.pipe.server.MessagePipeServerAutoConfiguration,\
28-
org.minbox.framework.api.boot.autoconfigure.ssh.SshAgentAutoConfiguration
28+
org.minbox.framework.api.boot.autoconfigure.ssh.SshAgentAutoConfiguration,\
29+
org.minbox.framework.api.boot.autoconfigure.grace.ApiBootGraceLogAutoConfiguration
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>api-boot-starters</artifactId>
7+
<groupId>org.minbox.framework</groupId>
8+
<version>${revision}</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
12+
<artifactId>api-boot-starter-grace</artifactId>
13+
14+
<properties>
15+
<main.basedir>${basedir}/../../..</main.basedir>
16+
</properties>
17+
<developers>
18+
<developer>
19+
<name>恒宇少年</name>
20+
<email>jnyuqy@gmail.com</email>
21+
<organization>minbox-projects</organization>
22+
<organizationUrl>https://gitee.com/minbox-projects</organizationUrl>
23+
</developer>
24+
</developers>
25+
<scm>
26+
<connection>scm:git:https://gitee.com/minbox-projects/api-boot.git</connection>
27+
<developerConnection>scm:git:https://gitee.com/minbox-projects/api-boot.git</developerConnection>
28+
<url>https://gitee.com/minbox-projects/api-boot</url>
29+
<tag>HEAD</tag>
30+
</scm>
31+
<description>
32+
集成操作日志框架"Grace",让我们优雅的记录有效的、可读性高的、扩展性强的操作日志。
33+
</description>
34+
<dependencies>
35+
<dependency>
36+
<groupId>org.minbox.framework</groupId>
37+
<artifactId>api-boot-starter</artifactId>
38+
</dependency>
39+
<dependency>
40+
<groupId>org.minbox.framework</groupId>
41+
<artifactId>grace-core</artifactId>
42+
</dependency>
43+
<dependency>
44+
<groupId>org.minbox.framework</groupId>
45+
<artifactId>grace-expression</artifactId>
46+
</dependency>
47+
<dependency>
48+
<groupId>org.minbox.framework</groupId>
49+
<artifactId>grace-processor</artifactId>
50+
</dependency>
51+
</dependencies>
52+
</project>

api-boot-project/api-boot-starters/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
<module>api-boot-starter-message-pipe-client</module>
3737
<module>api-boot-starter-message-pipe-server</module>
3838
<module>api-boot-starter-ssh-agent</module>
39+
<module>api-boot-starter-grace</module>
3940
</modules>
4041

4142
</project>

0 commit comments

Comments
 (0)