不受spring管理的类,如何使用spring池中的对象

本文介绍了一个实用的Spring工具类,用于在实体类中轻松访问Spring管理的各类组件和服务。通过实现ApplicationContextAware接口,该工具类能提供静态方法来获取Spring上下文中的bean,包括通过名称或Class类型获取bean实例,方便进行依赖注入。此外,还提供了通过redis获取当前用户的方法。

如entity中如何使用spring管理的类??

package com.yaoxx.base;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.mgt.SessionManager;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.apache.shiro.web.util.WebUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import com.yaoxx.base.redis.RedisUtils;
import com.yaoxx.base.shiro.AuthRealm;
import com.yaoxx.base.shiro.CustomSessionManager;
import com.yaoxx.entity.sys.User;

/**
 * 
 * Filename: MyUtils.java
 * 
 * @version: 1.0
 * @since: JDK 1.8.0_91
 * @Description:
 *
 * 				<br>
 *               Modification History:<br>
 * 
 *               Date | Author | Version | Description<br>
 *               ------------------------------------------------------------------<br>
 * 
 *               2018年11月4日 | yao_x_x | 1.0 | 1.0 Version
 * 
 */
@Component
public class MyUtils implements ApplicationContextAware {

	private static final String currentUser = "user";

	/*-------------------------- spring上下文 工具 ----------------------------------*/
	private static ApplicationContext applicationContext;

	@Override
	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

		if (MyUtils.applicationContext == null) {
			MyUtils.applicationContext = applicationContext;
		}
		System.out
				.println("------------------------------------  com.yaoxx.base.MyUtils ------------------------------------------------------");

		System.out.println(
				"======== ApplicationContext配置成功,在普通类可以通过调用MyUtils.getApplicationContext()获取spring管理的对象=========");

		System.out.println("---------------------------------------------------------------------");
	}

	/**
	 * @return 获取 spring上下文
	 */
	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	/**
	 * @param clazz
	 * @return 通过Class对象获取一个类对象
	 */
	public static <T> T getBeanByClass(Class<T> clazz) {

		return applicationContext.getBean(clazz);
	}

	/**
	 * @param name
	 *            参数【name】是向spring注入bean时使用的id
	 *            ,使用注解注入默认id为 Class的【SimpleName】 (首字母小写 )	<br>
	 *            e.g: 											
	 *            {@code<bean id="a" class="com.bean.A">}		<br>
	 * @return
	 */
	public static Object getBeanByName(String name) {
		return applicationContext.getBean(name);
	}
	
	/**
	 * @param name  参考:{@link #getBeanByClass(Class)}
	 * @param clazz 参考:{@link #getBeanByName(String)}
	 * @return
	 */
	public static <T> T getBean(String name,Class<T> clazz){
		return applicationContext.getBean(name, clazz);
	}
	/*------------------------------------------------------------------------------------*/
	
	
	
	/*-----------------------------------  redis 获取当前用户 begin -------------------------------------*/

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值