在springboot項目中有一個消息處理類,要在其中獲取到httpSession,用@Autowired獲取不到。publicclassTMessageHandlerFactoryimplementsMessageHandlerFactory{@AutowiredprivateHttpSessionsession;@Overridepublicvoiddata(InputStreamdata){intuserId=(int)session.getAtrribute("key");//這里的session為空....//插入數(shù)據(jù)}}如果用構(gòu)造函數(shù)傳過來也不行。@ComponentpublicclassSMTPRunnerimplementsApplicationRunner{@AutowiredprivateUserServiceuserService;//不明白為什么這個可以獲取到@AutowiredprivateHttpSessionsession;//這個卻不行@Overridepublicvoidrun(ApplicationArgumentsapplicationArguments)throwsException{TMessageHandlerFactorymyFactory=newTMessageHandlerFactory(session);....}}即使使用SpringBeanFacotryUtil(implementsApplicationContextAware)也不行。@ComponentpublicclassSpringBeanFactoryUtilimplementsApplicationContextAware{privatestaticApplicationContextapplicationContext;@OverridepublicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{if(SpringBeanFactoryUtil.applicationContext==null){SpringBeanFactoryUtil.applicationContext=applicationContext;}}//獲取applicationContextpublicstaticApplicationContextgetApplicationContext(){returnapplicationContext;}//通過name獲取Bean.publicstaticObjectgetBean(Stringname){returngetApplicationContext().getBean(name);}//通過class獲取Bean.publicstaticTgetBean(Classclazz){returngetApplicationContext().getBean(clazz);}//通過name,以及Clazz返回指定的BeanpublicstaticTgetBean(Stringname,Classclazz){returngetApplicationContext().getBean(name,clazz);}}這種方法只能獲取到自定義的bean(UserService這種),獲取不到HttpSession這種Bean。應(yīng)該如何做呢?可以給個比較詳細的代碼嗎?網(wǎng)上的資料試了都不太行。
springboot普通類中如何獲取session?
慕哥6287543
2019-05-23 20:00:11