如何实现一个简易版的 Spring - 如何实现 Constructor 注入

本文是关于如何实现一个简易版Spring的第二篇,主要介绍Constructor注入的实现。通过设计数据结构解析XML配置文件,然后在创建Bean的过程中选择合适的Constructor进行注入。文章详细讲解了数据结构设计、XML配置文件解析以及Constructor选择的过程,并提供了完整代码的GitHub链接。
摘要由CSDN通过智能技术生成
前言

本文是「如何实现一个简易版的 Spring」系列的第二篇,在 第一篇 介绍了如何实现一个基于 XML 的简单 Setter 注入,这篇来看看要如何去实现一个简单的 Constructor 注入功能,实现步骤和 Setter 注入是一样的“套路”,先设计一个数据结构去解析表达 XML 配置文件里的信息,然后再使用这些解析好的数据结构做一些事情,比如这里的 Constructor 注入。话不多说,下面我们直接进入正题。

数据结构设计

使用 Constructor 注入方式的 XML 的一种配置如下所示:

<bean id="orderService" class="cn.mghio.service.version3.OrderService">
    <constructor-arg ref="stockService"/>
    <constructor-arg ref="tradeService"/>
    <constructor-arg type="java.lang.String" value="mghio"/>
</bean>

以上 OrderService 类如下:

/**
 * @author mghio
 * @since 2021-01-16
 */
public class OrderService {

    private StockDao stockDao;
    private TradeDao tradeDao;
    private String owner;

    public OrderService(Stock
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Spring Integration FTP模块实现动态目录文件上传,需要使用`FtpRemoteFileTemplate`来完成上传操作。如果要实现动态目录上传,可以使用SpEL表达式来动态指定远程目录路径。 首先,需要在Spring配置文件中定义`FtpRemoteFileTemplate`和`FtpSessionFactory`: ```xml <bean id="ftpSessionFactory" class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory"> <property name="host" value="ftp.example.com"/> <property name="port" value="21"/> <property name="username" value="username"/> <property name="password" value="password"/> </bean> <bean id="ftpRemoteFileTemplate" class="org.springframework.integration.ftp.outbound.FtpRemoteFileTemplate"> <constructor-arg ref="ftpSessionFactory"/> <property name="useTemporaryFileName" value="false"/> </bean> ``` 然后,可以在代码中使用`FtpRemoteFileTemplate`进行上传操作: ```java @Autowired private FtpRemoteFileTemplate ftpRemoteFileTemplate; public void uploadFile(File file, String remoteDirectory) { ftpRemoteFileTemplate.execute(session -> { session.mkdir(remoteDirectory); session.write(new FileInputStream(file), remoteDirectory + "/" + file.getName()); return null; }); } ``` 在上面的代码中,使用`ftpRemoteFileTemplate.execute()`方法执行FTP操作,`session.mkdir(remoteDirectory)`方法创建远程目录,`session.write()`方法上传文件到指定目录。 使用SpEL表达式动态指定远程目录路径,可以在`remoteDirectory`参数中使用`${}`包围的表达式,例如: ```java String remoteDirectory = "/data/${new java.text.SimpleDateFormat('yyyy-MM-dd').format(new java.util.Date())}"; ``` 这个表达式会根据当前日期动态创建远程目录,例如:`/data/2022-05-23`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值