package com.iplatform.core; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationEvent; import org.springframework.core.Ordered; /** * 获取系统定义的 Bean 实例。 * @author 时克英 * @date 2022-08-25 */ public class BeanContextAware implements ApplicationContextAware, Ordered { private static ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext ctx) throws BeansException { applicationContext = ctx; } public static final String[] getBeanNamesForType(Class clazz){ return applicationContext.getBeanNamesForType(clazz); } public static final Object getBeanByName(String name){ return applicationContext.getBean(name); } public static final T getBeanByType(Class clazz){ return applicationContext.getBean(clazz); } /** * 发送Spring事件,目前只有角色(功能)权限变更,通知Security重新加载资源。 * @param event * @date 2023-05-07 */ public static final void publishEvent(ApplicationEvent event){ if(event == null){ throw new IllegalArgumentException("event不能为空"); } applicationContext.publishEvent(event); } @Override public int getOrder() { return Ordered.HIGHEST_PRECEDENCE; } }