spring如何在普通类里面进行依赖注入

功能需求:

因项目需要,要做一个导入导出功能,以此来生成批量数据.为了让导入功能和业务逻辑分开,就把这个导入功能做成一个独立的Util工具类.

问题描述

把导入功能和业务逻辑分开后,所遇到的问题就是,这个导入功能需要依赖其他的资源,按照一般的注解方法肯定是行不通了,那么,如何在普通方法里面进行注解依赖呢?

猜想

一般的spring注解(@controller 、@service、@repository等等)这些注解的作用就是把这些类纳入进spring容器中进行管理。如果我们想要在普通类里面进行资源的依赖注入,第一步就先要实现该类能被spring容器管理。如何实现呢?

解决方案

  1. 注册方法
      在类名上方加入 @Component 注解(和普通的控制器注解类似)
//注册扫描普通类
@Component
public class ParsingUploadRooms {
}
  1. 注入需要使用的资源
    @Resource
    private RoomTypeManager roomTypeManager;

    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    //需要调用本身,因此也需要实例化
 	private static ParsingUploadRooms uploadRooms;
  1. 初始化注入(凡是需要依赖注入的资源,都要在下面初始化,不然诸如不成功别忘了 @PostConstruct 注解)
    @PostConstruct
    public void init() {
        uploadRooms = this;
        uploadRooms.jdbcTemplate = this.jdbcTemplate;
        uploadRooms.roomTypeManager = this.roomTypeManager;
     
    }

  1. 然后就可以像平时使用的spring组件一样这个工具类了.
  2. 完整实例
       
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.Map;

/**
 * 〈一句话功能简述〉
* 〈解析上传的文件里面的数据,存入数据库,实现导入式新建房源〉 * * @author wxz * @create 2019-04-09 * @since 1.0.0 */
//注册扫描普通类 @Component public class ParsingUploadRooms { @Resource private RoomTypeManager roomTypeManager; @Autowired private JdbcTemplate jdbcTemplate; private static ParsingUploadRooms uploadRooms; private IdList idList = new IdList(); @PostConstruct public void init() { uploadRooms = this; uploadRooms.jdbcTemplate = this.jdbcTemplate; uploadRooms.roomTypeManager = this.roomTypeManager; } public IdList getIdList(){ IdList idList = ParsingUploadRooms.uploadRooms.idList; return idList; } //因为涉及到项目保密问题,里面的具体方法就不在这里一一列出了,如果你也遇到了类似的问题,照猫画虎,应该对你有所帮助 }

以上就是如何在普通类里面如何进行依赖注入的解决方案了。

你可能感兴趣的:(spring,mvc笔记,javaWeb项目笔记,工作笔记/后端,spring,spring依赖注入,依赖注入)