使用注解,spring中无法注入bean?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用注解,spring中无法注入bean?相关的知识,希望对你有一定的参考价值。

@Component
public class MultiDataSource extends AbstractRoutingDataSource
@Autowired
private Dydatasource dydatasource;

private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>();

/**
* 设置dataSourceKey的值
* @param dataSource
*/
public void setDataSourceKey(String dataSource) throws SQLException

System.out.println(22222);
System.out.println(dataSource);
// String conf = "applicationContext.xml";
// ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
// Dydatasource dydatasource = ac.getBean("dydatasource", Dydatasource.class);
DataSource turedatasource = dydatasource.registerDs(dataSource);
System.out.println(dydatasource);
Object ture = turedatasource;
Object data = dataSource;

System.out.println(2);

Map<Object, Object> objectObjectMap = new HashMap<Object, Object>();
objectObjectMap.put(data, ture);

super.setTargetDataSources(objectObjectMap);
System.out.println(objectObjectMap.get(data));

// dataSourceKey.set(dataSource);


/**+
* 清除dataSourceKey的值
*/
public static void toDefault()
// dataSourceKey.remove();


/**
* 返回当前dataSourceKey的值
*/

@Override
protected Object determineCurrentLookupKey()
// return dataSourceKey.get();
return null;


这种情况,帮你找到两种解决办法:
  1 .将接口与对应的实现类放在与application启动类的同一个目录或者他的子目录下,这样注解可以被扫描到,这是最省事的办法
  2 .在指定的application类上加上这么一行注解,手动指定application类要扫描哪些包下的注解追问

上面注释的那两行new applicationcontect获取bean其实可以获取到那个bean,但是我明明监听的时候就已经加入容器了,为什么获取不到;

参考技术A 法国哼哼唧唧健健康康卡卡该喝喝斤斤计较坎坎坷坷巴巴爸爸你非凡哥好几年那你们慢慢嘛嘛嘛你那你爸爸v成功后

以上是关于使用注解,spring中无法注入bean?的主要内容,如果未能解决你的问题,请参考以下文章

关于springMVC中bean无法注入的问题

Spring--Spring 注入

spriing boot 实战

service 无法注入bean问题

Spring注解@Resource和@Autowired区别对比

求springmvc 注入多个bean的方法