如何在自定义的线程中获取注入到容器中的对象,并使用该对象操作数据

在自定义的线程中是无法最直接使用@Autowired创建对象的,因为我们使用的线程是new对象的方式创建的·,所以和spring容器半毛钱关系都没有

这里需要小伙伴手动创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
 
/**
 * @Author Yourheart
 * @Date 2022/12/6 16:12
 */
@Component
public class SpringBeanUtil  implements ApplicationContextAware {
 
    private static  ApplicationContext applicationContext;
 
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringBeanUtil.applicationContext=applicationContext;
    }
 
    public static ApplicationContext getContext(){
        return applicationContext;
    }
 
    public static Object getBeanByName(String beanName){
        if (applicationContext==null){
            return null;
        }
        return applicationContext.getBean(beanName);
    }
 
    public static <T> T getBean(Class<T> type){
        return applicationContext.getBean(type);
    }
}

  然后呢获取对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import com.alibaba.fastjson.JSONObject;
import com.java.mapper.TestMapper;
import com.java.util.SpringBeanUtil;
import com.java.util.Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * @Author Yourheart
 * @Date 2022/12/6 15:46
 */
@Slf4j
@Component
@Lazy
public class TestDemo  implements Runnable{
 
    private TestMapper testMapper=SpringBeanUtil.getBean(TestMapper.class);
 
 
    @Override
    public void run() {
        for (int k=0;k<200;k++){
            log.error("k:{}",k);
            testMapper.dataTest();
        }
 
    }
 
}

  这里使用@Lazy,不然启动就会报错,下面就可以愉快的操作数据库,各种方法了

 

posted @   不忘初心2021  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示