Skip to content

Commit 5af3a97

Browse files
gitchenjhklboke
authored andcommitted
支持部分配置在运行时动态改变
1 parent bf08c2c commit 5af3a97

7 files changed

Lines changed: 129 additions & 10 deletions

File tree

jodconverter-web/pom.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,6 @@
164164
</includes>
165165
<filtering>true</filtering>
166166
</resource>
167-
<resource>
168-
<directory>src/main/conf</directory>
169-
</resource>
170167
</resources>
171168
<plugins>
172169
<plugin>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
java -jar jodconverter-web-1.5.8.RELEASE.jar -> ..\\log\\kkFileView.log
1+
java -Dspring.config.location=..\conf\application.properties -jar jodconverter-web-1.5.8.RELEASE.jar -> ..\log\kkFileView.log
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/bin/bash
2-
nohup java -jar jodconverter-web-1.5.8.RELEASE.jar ../log/kkFileView.log 2>&1 &
2+
nohup java -Dspring.config.location=../conf/application.properties -jar jodconverter-web-1.5.8.RELEASE.jar ../log/kkFileView.log 2>&1 &

jodconverter-web/src/main/conf/application.properties

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#######################################不可动态配置,需要重启生效#######################################
12
server.port = 8012
23
spring.http.encoding.charset = utf8
34
## Freemarker 配置
@@ -17,14 +18,18 @@ spring.resources.static-locations = classpath:/META-INF/resources/,classpath:/re
1718
## openoffice home路径
1819
office.home = C:\\Program Files (x86)\\OpenOffice 4
1920
server.tomcat.uri-encoding = UTF-8
20-
converted.file.charset = GBK
2121
#文件上传限制
2222
spring.http.multipart.max-file-size=100MB
23+
24+
#缓存实现类型,不配默认为JDK实现,可配置为redis实现(需要配置spring.redisson.address等参数)
25+
#cache.type = redis
26+
#redis连接
27+
#spring.redisson.address = 192.168.1.204:6379
28+
29+
#######################################可在运行时动态配置#######################################
2330
##文本类型
2431
simText = txt,html,xml,java,properties,mp3,mp4,sql
2532
#多媒体类型
2633
media=mp3,mp4,flv,
27-
#缓存实现类型,不配默认为JDK实现,可配置为redis实现(需要配置spring.redisson.address等参数)
28-
#cache.type = redis
29-
#redis连接
30-
#spring.redisson.address = 192.168.1.204:6379
34+
#文件转换编码
35+
converted.file.charset = GBK
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package cn.keking.config;
2+
3+
/**
4+
* @auther: chenjh
5+
* @time: 2019/4/10 17:22
6+
* @description
7+
*/
8+
public class ConfigConstants {
9+
10+
private static String[] simText = {};
11+
private static String[] media = {};
12+
private static String convertedFileCharset;
13+
14+
public static String[] getSimText() {
15+
return simText;
16+
}
17+
18+
public static void setSimText(String[] simText) {
19+
ConfigConstants.simText = simText;
20+
}
21+
22+
public static String[] getMedia() {
23+
return media;
24+
}
25+
26+
public static void setMedia(String[] media) {
27+
ConfigConstants.media = media;
28+
}
29+
30+
public static String getConvertedFileCharset() {
31+
return convertedFileCharset;
32+
}
33+
34+
public static void setConvertedFileCharset(String convertedFileCharset) {
35+
ConfigConstants.convertedFileCharset = convertedFileCharset;
36+
}
37+
38+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package cn.keking.config;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.stereotype.Component;
6+
7+
import javax.annotation.PostConstruct;
8+
import java.io.BufferedReader;
9+
import java.io.File;
10+
import java.io.FileReader;
11+
import java.io.IOException;
12+
import java.util.Properties;
13+
14+
/**
15+
* @auther: chenjh
16+
* @time: 2019/4/10 16:16
17+
* @description 每隔1s读取并更新一次配置文件
18+
*/
19+
@Component
20+
public class ConfigRefreshComponent {
21+
22+
private static final Logger LOGGER = LoggerFactory.getLogger(ConfigRefreshComponent.class);
23+
24+
@PostConstruct
25+
void refresh() {
26+
Thread configRefreshThread = new Thread(new ConfigRefreshThread());
27+
configRefreshThread.start();
28+
}
29+
30+
class ConfigRefreshThread implements Runnable {
31+
@Override
32+
public void run() {
33+
try {
34+
Properties properties = new Properties();
35+
String userDir = System.getProperty("user.dir");
36+
Properties properties1 = System.getProperties();
37+
if (userDir.endsWith("bin")) {
38+
userDir = userDir.substring(0, userDir.length() - 4);
39+
}
40+
String separator = java.io.File.separator;
41+
String configFilePath = userDir + separator + "conf" + separator + "application.properties";
42+
File file = new File(configFilePath);
43+
if (!file.exists()) {
44+
configFilePath = userDir + separator + "jodconverter-web" + separator + "src" + separator + "main" + separator + "conf" + separator + "application.properties";
45+
}
46+
String text = null;
47+
String media = null;
48+
String convertedFileCharset = null;
49+
String[] textArray = {};
50+
String[] mediaArray = {};
51+
while (true) {
52+
BufferedReader bufferedReader = new BufferedReader(new FileReader(configFilePath));
53+
properties.load(bufferedReader);
54+
text = properties.get("simText") == null ? "" : properties.get("simText").toString();
55+
media = properties.get("media") == null ? "" : properties.get("media").toString();
56+
convertedFileCharset = properties.get("converted.file.charset") == null ? "" : properties.get("converted.file.charset").toString();
57+
textArray = text.split(",");
58+
mediaArray = media.split(",");
59+
ConfigConstants.setSimText(textArray);
60+
ConfigConstants.setMedia(mediaArray);
61+
ConfigConstants.setConvertedFileCharset(convertedFileCharset);
62+
Thread.sleep(1000L);
63+
}
64+
} catch (IOException | InterruptedException e) {
65+
LOGGER.error("读取配置文件异常:{}", e);
66+
}
67+
}
68+
}
69+
}

jodconverter-web/src/main/java/cn/keking/utils/FileUtils.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.keking.utils;
22

3+
import cn.keking.config.ConfigConstants;
34
import cn.keking.model.FileAttribute;
45
import cn.keking.model.FileType;
56
import cn.keking.service.cache.CacheService;
@@ -63,6 +64,12 @@ public String getConvertedFile(String key) {
6364
* @return
6465
*/
6566
public FileType typeFromUrl(String url) {
67+
if (ConfigConstants.getSimText() != null && ConfigConstants.getSimText().length > 0) {
68+
simText = ConfigConstants.getSimText();
69+
}
70+
if (ConfigConstants.getMedia() != null && ConfigConstants.getMedia().length > 0) {
71+
media = ConfigConstants.getMedia();
72+
}
6673
String nonPramStr = url.substring(0, url.indexOf("?") != -1 ? url.indexOf("?") : url.length());
6774
String fileName = nonPramStr.substring(nonPramStr.lastIndexOf("/") + 1);
6875
String fileType = fileName.substring(fileName.lastIndexOf(".") + 1);
@@ -217,6 +224,9 @@ public String getFileEncodeUTFGBK(String path){
217224
*/
218225
public void doActionConvertedFile(String outFilePath) {
219226
StringBuffer sb = new StringBuffer();
227+
if(ConfigConstants.getConvertedFileCharset() != null) {
228+
charset = ConfigConstants.getConvertedFileCharset();
229+
}
220230
try (InputStream inputStream = new FileInputStream(outFilePath);
221231
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, charset))){
222232
String line;

0 commit comments

Comments
 (0)