在本地文件上传到linux服务器方法中,使用@value("${}")无法获取配置文件内容解决方案
正常使用@value注解去获取yaml或者properties中的文件是可以的,但是我在工具类中使用时,没有获取到配置文件里的值;
上网看了一下,有的说配置文件首行要空出来,试了一下无效;
先贴代码:这是一个本地文件上传到服务器的工具类
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component public class UDFUtils { public static String host; public static int port; public static String user; public static String password; @Value("${server.host}") public void setHost(String serverHost){ host=serverHost; } @Value("${server.user}") public void setUser(String serverUser){ user=serverUser; } @Value("${server.password}") public void setPassword(String serverPassword){ password=serverPassword; } @Value("${server.upport}") public void setPort(Integer serverPort){ port=serverPort; } private Session session; /** * 创建一个连接 */ private void initialSession() throws Exception { if (session == null) { JSch jsch = new JSch(); session = jsch.getSession(user, host, port); session.setUserInfo(new UserInfo() { @Override public String getPassphrase() { return null; } @Override public String getPassword() { return null; } @Override public boolean promptPassword(String arg0) { return false; } @Override public boolean promptPassphrase(String arg0) { return false; } @Override public boolean promptYesNo(String arg0) { return true; } @Override public void showMessage(String arg0) { } }); session.setPassword(password); session.connect(); } } /** * 关闭连接 * * @throws Exception */ public void close() throws Exception { if (session != null && session.isConnected()) { session.disconnect(); session = null; } } /** * 上传文件 * * @param localPath 本地路径,若为空,表示当前路径 * @param localFile 本地文件名,若为空或是“*”,表示目前下全部文件 * @param remotePath 远程路径,若为空,表示当前路径,若服务器上无此目录,则会自动创建 * @throws Exception */ public void putFile(String localPath, String localFile, String remotePath) throws Exception { this.initialSession(); Channel channelSftp = session.openChannel("sftp"); channelSftp.connect(); ChannelSftp c = (ChannelSftp) channelSftp; String remoteFile = null; if (remotePath != null && remotePath.trim().length() > 0) { try { c.mkdir(remotePath); } catch (Exception e) { } remoteFile = remotePath + "/."; } else { remoteFile = "."; } String file = null; if (localFile == null || localFile.trim().length() == 0) { file = "*"; } else { file = localFile; } if (localPath != null && localPath.trim().length() > 0) { if (localPath.endsWith("/")) { file = localPath + file; } else { file = localPath + "/" + file; } } c.put(file, remoteFile); channelSftp.disconnect(); } }
下面是解决方案,看一下就明白:
public static String host; public static int port; public static String user; public static String password; @Value("${server.host}") public void setHost(String serverHost){ host=serverHost; } @Value("${server.user}") public void setUser(String serverUser){ user=serverUser; } @Value("${server.password}") public void setPassword(String serverPassword){ password=serverPassword; } @Value("${server.upport}") public void setPort(Integer serverPort){ port=serverPort; }
配置文件也贴一下:
#服务器信息 server.host=127.0.0.1 server.upport=22 server.user=root server.password=root

浙公网安备 33010602011771号