Java Spring框架项目中普通类直接调用注解类的方法

  • Post author:
  • Post category:java


需要写一个工具类:并进行注解

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 版权协议,转载请附上原文出处链接和本声明。