spring mvc 工具类的静态方法使用注入

类代码

@Component
public class RegisterConfig {

    @Autowired
    private  DepartMentService departMentService;

    public void setDepartMentService(DepartMentService departMentService) {
        this.departMentService = departMentService;
    }

    private static RegisterConfig registerConfig;

    @PostConstruct
    public void init(){
        registerConfig = this;
        registerConfig.departMentService = this.departMentService;
    }

    public static String RootPath = System.getProperty("register.webapp");


    public static int DepartMentIDLength(){
        if(departMentIDLength == 0){
            departMentIDLength = registerConfig.departMentService.departMentUnitIDLength();
        }
        return departMentIDLength;
    }

    private static int departMentIDLength = 0;

其中:@Component, @PostConstruct 还有private static RegisterConfig registerConfig;是关键,原理应该是容器启动时实例化了RegisterConfig ,注入了departMentService,调用了init(),并将RegisterConfig.registerConfig初始化,然后就可以使用了。

因application.xml中的xml配置为 default-lazy-init=”true” ,所以要在这个配置文件中加入一个配置,让RegisterConfig 可以在容器启动时就注入。

   <beans>
        <bean id="registerConfig" class="com.register.normalClass.RegisterConfig" init-method="init"
              lazy-init="false">
        </bean>
    </beans>```


注:
这样处理后是可以注入了,但是这个类中的一个读取根目录的变量却读取不到了,System.getProperty读到的是null

public static String RootPath = System.getProperty("register.webapp");

这就需要在启动监听里设置一下这个值:

   //RegisterConfig加了静态注入后,这个值就取不到了,所有在这个地方给他赋值
                RegisterConfig.RootPath = System.getProperty("register.webapp");

如果哪位有更好的方法,请在评论里给一下,谢谢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值