I know this may looks like a previously asked question but I’m facing a different problem here.
I have a utility class that has only static methods. I don’t and I won’t take an instance from it.
public class Utils{
private static Properties dataBaseAttr;
public static void methodA(){
}
public static void methodB(){
}
}
Now I need Spring to fill dataBaseAttr with database attributes Properties.Spring config is:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
<util:properties id="dataBaseAttr"
location="file:#{classPathVariable.path}/dataBaseAttr.properties" />
</beans>
I already done it in other beans but the problem here in this class (Utils) isn’t a bean, And if I make it a bean nothing changes I still can’t use the variable since the class will not be instantiated and variable always equals null.
You have two possibilities:
org.springframework.beans.factory.config.MethodInvokingFactoryBeanto invoke a static setter.In the first option you have a bean with a regular setter but instead setting an instance property you set the static property/field.
but in order to do this you need to have an instance of a bean that will expose this setter (its more like an workaround).
In the second case it would be done as follows:
On you case you will add a new setter on the
Utilsclass:and in your context you will configure it with the approach exemplified above, more or less like: