解决Callable的对象中,用@Autowired注入别的对象失败问题

实现Callable的对象中,用@Autowired注入别的对象失败

场景是这样:

我需要在一个实现类A中写一个拿到返回值的多线程,于是用的Callable,在这个实现类A外我又写了一个专门实现Callable的实现类B,在B中用spring注解@Autowired注入另外一个实现类C,当代码运行时发现,C怎么也不能注入进B中,脑袋瓜疼。

目前的解决路线:

把@Autowired写到了A类中,并且把B对象直接放到A中,作为了内部类,这样发现用C好使了,但是还不清楚为什么单独在B中用@Autowired或者其他注入对象的方法行不通!

Spring @Autowired 注解不生效

@Autowired

默认不生效。为了生效,需要在xml配置:<context:annotation-config>

注解一<context:component-scan base-package=" "> 开启包扫描

注解二<context:annotation-config>开启注入注解扫描

一般情况下,两个注解不一起使用.

当"注解一",扫描含有注解@Component/@Service等的类时,注入注解自动生效就不需要配置注解二了

当要扫描的类上没有含有@Component/@Service等注解时,注入注解没有生效,那么只需要添加注解二即可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Spring @Value注解失效问题解决方案

    项目使用的是SSM体系,spring的配置如下,配置没问题,因为我发现其他文件中的@Value可以使用,只有一处@Value失效了. spring-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.or

  • 解决SpringBoot 测试类无法自动注入@Autowired的问题

    原来的测试类的注解: @RunWith(SpringRunner.class) @SpringBootTest 一直没法自动注入,后来在@SpringBootTest, 加入启动类Application后就可以了 @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) 补充:spring boot项目单元测试时,@Autowired无法注入Service解决方式 首先确认: 测试类所在包名要和启动类一致

  • 解决Springboot @Autowired 无法注入问题

    特别提醒:一定要注意文件结构 WebappApplication 一定要在包的最外层,否则Spring无法对所有的类进行托管,会造成@Autowired 无法注入. 1. 添加工具类获取在 Spring 中托管的 Bean (1)工具类 package com.common; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBeanDefinitionE

  • 因Spring AOP导致@Autowired依赖注入失败的解决方法

    发现问题: 之前用springAOP做了个操作日志记录,这次在往其他类上使用的时候,service一直注入失败,找了网上好多内容,发现大家都有类似的情况出现,但是又和自己的情况不太符合.后来总结自己的情况发现:方法为private修饰的,在AOP适配的时候会导致service注入失败,并且同一个service在其他的public方法中就没有这种情况,十分诡异. 解决过程: 结合查阅的资料进行了分析:在org.springframework.aop.support.AopUtils中: publi

  • 解决Callable的对象中,用@Autowired注入别的对象失败问题

    实现Callable的对象中,用@Autowired注入别的对象失败 场景是这样: 我需要在一个实现类A中写一个拿到返回值的多线程,于是用的Callable,在这个实现类A外我又写了一个专门实现Callable的实现类B,在B中用spring注解@Autowired注入另外一个实现类C,当代码运行时发现,C怎么也不能注入进B中,脑袋瓜疼. 目前的解决路线: 把@Autowired写到了A类中,并且把B对象直接放到A中,作为了内部类,这样发现用C好使了,但是还不清楚为什么单独在B中用@Autowi

  • new出来的对象中无法使用@autowired进行对象bean注入问题

    目录 new出来的对象无法使用@autowired进行对象bean注入 new创建对象,成员对象使用@autowired注入为null new出来的对象无法使用@autowired进行对象bean注入 在我new的类使用了@autowired注入,但是测试发现并没有注入进来,对象是空的 比如下面,User实体中需要调用别的实体的mapper进行查询 这里使用 @PostConstruct注解来解决: 新建一个静态的对象,然后使用@PostConstruct来初始化,因为我是本类使用,所以使用了p

  • springboot 静态方法中使用@Autowired注入方式

    目录 静态方法使用@Autowired注入 静态方法使用@Autowired注入的类 解决方法 静态方法使用@Autowired注入 @Component public class StructUtil { private static StructService structService; private static List<StructInfo> structInfos; // 通过重写set注入 @Autowired public void setStructService(Str

  • SpringBoot集成shiro,MyRealm中无法@Autowired注入Service的问题

    网上说了很多诸如是Spring加载顺序,shiroFilter在Spring自动装配bean之前的问题,其实也有可能忽略如下低级错误. 在ShiroConfiguration中要使用@Bean在ApplicationContext注入MyRealm,不能直接new对象. 道理和Controller中调用Service一样,都要是SpringBean,不能自己new. 错误方式: @Bean(name = "securityManager") public SecurityManager

  • 解决Test类中不能使用Autowired注入bean的问题

    目录 Test类中不能使用Autowired注入bean 在测试类中我自己使用的测试单元是 正确的应该是使用Spring-test里面的测试单元 Test包中使用autowired注入提示Could not autowire. No beans of 'xxx' type found. 将autowired注解换成Resource注解完美解决 Test类中不能使用Autowired注入bean 今天下午好好看了下关于Spring的注解问题. 在测试类中使用AutoWired注解一直不能获取到Be

  • 解决SpringMvc中普通类注入Service为null的问题

    SpringMvc中普通类注入Service为null 场景: 使用Quartz定时器时,普通的java类需要注入spring的service类,在调用时报错! 解决方式: /** * 定时获取课程的service */ @Autowired protected QuartzGetCourseService quartzGetCourseService = (QuartzGetCourseService) SpringContextUtil .getBean("quartzGetCourseSe

  • 使用@Autowired 注入RedisTemplate报错的问题及解决

    目录 @Autowired 注入RedisTemplate报错 下面是Redis配置类 解决方法一 解决方法二 下面咱们来看一下原因 @Autowired 注入RedisTemplate为null 解决 @Autowired 注入RedisTemplate报错 先看报错信息 Field redisTemplate in xxx.xxx required a bean of type 'org.springframework.data.redis.core. RedisTemplate' that

  • 解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题

    最近在做一个"温湿度控制"的项目,项目要求通过用户设定的温湿度数值和实时采集到的数值进行比对分析,因为数据的对比与分析是一个通过前端页面控制的定时任务,经理要求在用户开启定时任务时,单独开启一个线程进行数据的对比分析,并将采集到的温湿度数值存入数据库中的历史数据表,按照我们正常的逻辑应该是用户在请求开启定时任务时,前端页面通过调用后端接口,创建一个新的线程来执行定时任务,然后在线程类中使用 @Autowired 注解注入保存历史数据的service层,在线程类中调用service层保存

  • 解决@Autowired注入static接口的问题

    目录 @Autowired注入static接口问题 @Autowired自动注入普通service很方便 但是如果注入static修饰的service则注入不了 后来网上百度了一下,看到了一个方法 标签解释 导致@Autowired注入失败的问题 背景 原因 @Autowired注入static接口问题 @Autowired自动注入普通service很方便 如: @Component public class WarningMatterUtil { //报警表 @Autowired privat

  • 解决Spring在Thread中注入Bean无效的问题

    目录 在Thread中注入Bean无效 错误的注入方法 通过封装Thread子类注入 通过外部引入 Spring多线程中bean的注入问题 网上的主要解决方法有 在Thread中注入Bean无效 在Spring项目中,有时需要新开线程完成一些复杂任务,而线程中可能需要注入一些服务.而通过Spring注入来管理和使用服务是较为合理的方式.但是若直接在Thread子类中通过注解方式注入Bean是无效的. 因为Spring本身默认Bean为单例模式构建,同时是非线程安全的,因此禁止了在Thread子类

随机推荐