Die Java-Konfiguration ist heutzutage normal, daher habe ich keine großen Probleme. Angenommen, Sie schreiben Spring-Batch in XML und möchten die SQL-Eigenschaft auf die SQL-Zeichenfolge festlegen, die in die Datei ausgegeben wurde.
FileCopyUtils [java - Wie lade ich eine Ressource und verwende ihren Inhalt als Zeichenfolge in Spring - Stapelüberlauf](https://stackoverflow.com/questions/14022839/how-do-i-load-a-resource-and-use -es-Inhalt-als-String-im-Frühling)
<bean id="sql" class="java.lang.String">
<constructor-arg>
<bean class="org.springframework.util.FileCopyUtils"
factory-method="copyToByteArray">
<constructor-arg value="classpath:a.txt"
type="java.io.InputStream" />
</bean>
</constructor-arg>
</bean>
Das obige ist alles mit XML abgeschlossen, aber es scheint ein wenig lang zu sein. Denken Sie also daran, Ihre eigene Bohne zu machen, die genau das tut.
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.stream.Collectors;
import org.springframework.util.ResourceUtils;
public class ResourceToStringUtils {
public String to(String location) throws IOException {
ApplicationContext ctx = ...;
BufferedReader in
= new BufferedReader(new InputStreamReader(resource.getInputStream(), Charset.defaultCharset()));
return = in.lines().collect(Collectors.joining(System.lineSeparator()));
// 2017/0/02 Nachtrag Ich habe wie folgt geschrieben, aber je nach Umgebung tritt FileNotFoundException auf.
//Details werden separat geschrieben. vielleicht.
//File file = ResourceUtils.getFile(location);
//return Files.lines(file.toPath(), Charset.defaultCharset()).collect(Collectors.joining(System.lineSeparator()));
}
}
Erstellen Sie eine Klasse, die den Speicherort von spring empfängt, den gesamten Inhalt der Datei liest, eine Zeichenfolge ausgibt und diese zurückgibt.
<bean id="resourceToStringUtils"
class="kagamihoge.hogehoge.ResourceToStringUtils"></bean>
...
<property name="p" value="#{resourceToStringUtils.to('file:hoge.txt')}"></property>
...
<property name="p" value="#{resourceToStringUtils.to('classpath:foo.sql')}"></property>