在本地文件上传到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

 

posted @ 2021-09-17 17:29  小小菜包子  阅读(833)  评论(1)    收藏  举报