需要写一个工具类:并进行注解
package com.mods;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/*
* Spring上下文工具类,用以让普通类获取Spring容器中的Bean
* */
@Component
public class GetBeanUtil implements ApplicationContextAware {
//ApplicationContext 对象是Spring开源框架的上下文对象实例,在项目运行时自动装载Handler内的所有信息到内存
protected static ApplicationContext applicationContext;
/*
* 获取applicationContext
* */
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (GetBeanUtil.applicationContext == null) {
GetBeanUtil.applicationContext = applicationContext;
}
}
public static Object getBean(String name){
return getApplicationContext().getBean(name);
}
public static <T>T getBean(Class<T> current){
return getApplicationContext().getBean(current);
}
}
其中这里的 setApplicationContext 会在初始化的时候 IOC bean注册时候是对这个接口初始化了执行这个方法 也就是@Component 注解会被ICO注入
如何调用:
以下代码所在的类是需要被new创建实例的
//Project_NewService 和 Task_NewService 是有@Service 注解的类
Project_NewService project_newService = GetBeanUtil.getBean(Project_NewService.class);
Task_NewService task_newService = GetBeanUtil.getBean(Task_NewService.class);
//这样的话就可以直接使用 project_newService 了
Project_New current = project_newService.getByOutput_Camera_Lens_Name(command);
注:之前碰到一个问题,找了好久都没处理掉(就是我的工具类放到了别的包里面)
在最开始的地方的时候,工具类中的applicationContext 一直报 null ,也就是注解初始化没执行的原因,后来放到了com.mods包中就没有问题了。(可是注解跟放那个包中没太大关系的呀,所以挺起怪的问题,让我找个好几个小时)
版权声明:本文为qq_42855293原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。