java普通类获取session_springboot普通类中如何获取session?

在springboot项目中有一个消息处理类,要在其中获取到httpSession,用@Autowired获取不到。

public class TMessageHandlerFactory implements MessageHandlerFactory {

@Autowired

private HttpSession session;

@Override

public void data(InputStream data) {

int userId = (int)session.getAtrribute("key"); //这里的session为空

.... //插入数据

}

}

如果用构造函数传过来也不行。

@Component

public class SMTPRunner implements ApplicationRunner {

@Autowired

private UserService userService; //不明白为什么这个可以获取到

@Autowired

private HttpSession session; //这个却不行

@Override

public void run(ApplicationArguments applicationArguments) throws Exception {

TMessageHandlerFactory myFactory = new TMessageHandlerFactory(session);

....

}

}

即使使用SpringBeanFacotryUtil (implements ApplicationContextAware) 也不行。

@Component

public class SpringBeanFactoryUtil implements ApplicationContextAware {

private static ApplicationContext applicationContext;

@Override

public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

if(SpringBeanFactoryUtil.applicationContext == null) {

SpringBeanFactoryUtil.applicationContext = applicationContext;

}

}

//获取applicationContext

public static ApplicationContext getApplicationContext() {

return applicationContext;

}

//通过name获取 Bean.

public static Object getBean(String name){

return getApplicationContext().getBean(name);

}

//通过class获取Bean.

public static T getBean(Class clazz){

return getApplicationContext().getBean(clazz);

}

//通过name,以及Clazz返回指定的Bean

public static T getBean(String name,Class clazz){

return getApplicationContext().getBean(name, clazz);

}

}

这种方法只能获取到自定义的bean(UserService这种),获取不到HttpSession这种Bean。

应该如何做呢?可以给个比较详细的代码吗?网上的资料试了都不太行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值