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。
應該如何做呢?可以給個比較詳細的代碼嗎?網上的資料試了都不太行。
總結
以上是生活随笔為你收集整理的java普通类获取session_springboot普通类中如何获取session?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 重复提交_java解决重复提交
- 下一篇: java date 最小值_java –