通过代码代替注解方式注入BEAN

正文

一般来说,注入的 bean的方式为使用注解,但有时候,是不方便使用注解注入bean,就用到了下面的工具类,使用方式:

IPersonRequestLogService iPersonRequestLogService = SpringUtil.getBean(IPersonRequestLogService.class);

工具类

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
import org.springframework.stereotype.Component;

/**
 * spring 工具类
 *
 * @author Admin
 */
@Slf4j
@Component("springUtil")
public class SpringUtil implements ApplicationContextAware {

	private static ApplicationContext context;

	@Override
	public void setApplicationContext(ApplicationContext context) throws BeansException {
		SpringUtil.context = context;
	}

	public static <T> T getBean(Class<T> clazz) {
		if (clazz == null) {
			return null;
		}
		return context.getBean(clazz);
	}

	public static <T> T getBean(String beanId) {
		if (beanId == null) {
			return null;
		}
		return (T) context.getBean(beanId);
	}

	public static <T> T getBean(String beanName, Class<T> clazz) {
		if (null == beanName || "".equals(beanName.trim())) {
			return null;
		}
		if (clazz == null) {
			return null;
		}
		return (T) context.getBean(beanName, clazz);
	}

	public static ApplicationContext getContext() {
		if (context == null) {
			return null;
		}
		return context;
	}

	public static void publishEvent(ApplicationEvent event) {
		if (context == null) {
			return;
		}
		try {
			context.publishEvent(event);
		} catch (Exception ex) {
			log.error(ex.getMessage());
		}
	}

}

相关推荐

  1. 通过代码代替注解方式注入BEAN

    2024-01-11 12:26:03       57 阅读
  2. 使用 kapt 注解生成依赖注入代码

    2024-01-11 12:26:03       19 阅读
  3. 【应用】Spring-Bean注入-xml+注解

    2024-01-11 12:26:03       30 阅读
  4. Spring Bean的获取方法 (手动注入bean)超级实用

    2024-01-11 12:26:03       63 阅读
  5. SQL注入漏洞代码分析

    2024-01-11 12:26:03       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-11 12:26:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-11 12:26:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-11 12:26:03       82 阅读
  4. Python语言-面向对象

    2024-01-11 12:26:03       91 阅读

热门阅读

  1. 使用云主机时要注意的情况

    2024-01-11 12:26:03       54 阅读
  2. P1643 完美数 题解

    2024-01-11 12:26:03       56 阅读
  3. sqlserver导出数据为excel再导入到另一个数据库

    2024-01-11 12:26:03       67 阅读
  4. 【Machine Learning】Other Stuff

    2024-01-11 12:26:03       44 阅读
  5. 数据结构之红黑树

    2024-01-11 12:26:03       63 阅读
  6. 深入解析 Golang 中的自旋锁

    2024-01-11 12:26:03       56 阅读