虽然题主你的代码写法各种看起来很诡异(。・∀・)ノ゙(比如有些地方意外的空了两格,以及静态方法中的代码排版炒鸡别扭,最后静态方法名没有驼峰)
但只从解决问题角度来说的话,那基本上是因为你的HwUtil没有被注入到Spring容器里嘛,也就是HwUtil还不是一个Bean,那也就基本从你们项目如何注入Bean的方式去检查咯
HwUtil
Spring
Bean
@Component
@Configuration
@Bean
xml
<bean>
FactoryBean
@Import
ImportSelector
ImportBeanDefinitionRegistrar
哈哈哈,基本上面这一溜检查一下,应该能找到原因
不过如果你真只是想在一个静态方法中去使用HwService,可以尝试去专门做一个BeanFactoryAware实现类去做BeanFactory的静态封装嘛,这样你就不用以后其他地方需要用静态方法中去如你所示这样使用Bean了,然后看着还这么别扭。。。BeanFactory的静态封装大致如下
HwService
BeanFactoryAware
BeanFactory
@Component public class BeanUtils implements BeanFactoryAware { private static BeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory) { BeanUtils.beanFactory = beanFactory; } /** * 其他你喜欢的方式获取Bean,也可以继续扩展,我只是举了个简单的例子 * @param tClass * @param <T> * @return */ public static <T> T get(Class<T> tClass) { return beanFactory.getBean(tClass); } }
那这样之后,你的静态HwUtil静态方法就可以不用注入HwService了,可以简单这么写
public static Map getQueuel(Map map) { HwService hwService = BeanUtils.get(HwService.class); System.out.println(hwUtil); return null; }
当然你觉得这样BeanUtils很麻烦,只想搞HwService这一个Bean,那你直接按照我BeanUtils中静态注入BeanFactory的方式注入HwService不就得了嘛
BeanUtils
@Component public class HwUtil { private static HwService hwService; @Autowired public void init(HwService hwService) { HwUtil.hwService = hwService; } public static Map getQueuel(Map map) { System.out.println(); return null; } }
当然前提是你得先解决哈你HwUtil没有被注入的问题哈,我这里只是简单用@Component来表示一下,你们项目的具体情况具体分析咯
大致这样叭~睡前看这一问,反而精神了~哈哈哈,债见( ̄︶ ̄)↗!
静态方法不能调用非静态方变量啊
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
虽然题主你的代码写法各种看起来很诡异(。・∀・)ノ゙(比如有些地方意外的空了两格,以及静态方法中的代码排版炒鸡别扭,最后静态方法名没有驼峰)
但只从解决问题角度来说的话,那基本上是因为你的
HwUtil
没有被注入到Spring
容器里嘛,也就是HwUtil
还不是一个Bean
,那也就基本从你们项目如何注入Bean
的方式去检查咯HwUtil
加@Component
注解(前提你们的Bean
扫描路径包含在了HwUtil
中)@Configuration
配置文件中去实现基于@Bean
注解的HwUtil
类型的返回方法xml
配置文件中去声明关于HwUtil
的<bean>
标签FactoryBean
方式去注入HwUtil
@Import
注解方式导入HwUtil
这个Bean
ImportSelector
实现类返回HwUtil
的全类名ImportBeanDefinitionRegistrar
实现去手动注入HwUtil
这个Bean
哈哈哈,基本上面这一溜检查一下,应该能找到原因
不过如果你真只是想在一个静态方法中去使用
HwService
,可以尝试去专门做一个BeanFactoryAware
实现类去做BeanFactory
的静态封装嘛,这样你就不用以后其他地方需要用静态方法中去如你所示这样使用Bean
了,然后看着还这么别扭。。。BeanFactory
的静态封装大致如下那这样之后,你的静态
HwUtil
静态方法就可以不用注入HwService
了,可以简单这么写当然你觉得这样
BeanUtils
很麻烦,只想搞HwService
这一个Bean
,那你直接按照我BeanUtils
中静态注入BeanFactory
的方式注入HwService
不就得了嘛当然前提是你得先解决哈你
HwUtil
没有被注入的问题哈,我这里只是简单用@Component
来表示一下,你们项目的具体情况具体分析咯大致这样叭~睡前看这一问,反而精神了~哈哈哈,债见( ̄︶ ̄)↗!
静态方法不能调用非静态方变量啊