В результаті знайшов два рішення:
1) Зробити поле не static - що не завжди є тим, що потрібно.
2) Обходиться таке обмеження наступним чином:
Є клас:
КОД
package com.devua;
public class Roots {
private static boolean inTerracottaMode = false;
...
/**
* @return the inTerracottaMode
*/
public static boolean isInTerracottaMode() {
boolean result;
readWriteLock.readLock().lock();
result = inTerracottaMode;
readWriteLock.readLock().unlock();
return result;
}
/**
* @param inTerracottaMode
* the inTerracottaMode to set
*/
public static void setInTerracottaMode(boolean inTerracottaMode) {
readWriteLock.writeLock().lock();
Roots.inTerracottaMode = inTerracottaMode;
readWriteLock.writeLock().unlock();
}
}
public class Roots {
private static boolean inTerracottaMode = false;
...
/**
* @return the inTerracottaMode
*/
public static boolean isInTerracottaMode() {
boolean result;
readWriteLock.readLock().lock();
result = inTerracottaMode;
readWriteLock.readLock().unlock();
return result;
}
/**
* @param inTerracottaMode
* the inTerracottaMode to set
*/
public static void setInTerracottaMode(boolean inTerracottaMode) {
readWriteLock.writeLock().lock();
Roots.inTerracottaMode = inTerracottaMode;
readWriteLock.writeLock().unlock();
}
}
Тепер пишемо наступну штуку в конфігураційному файлі:
КОД
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="roots" class="com.devua.Roots"/>
<bean id="terracottaModeInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="com.devua.Roots"/>
<property name="targetMethod" value="setInTerracottaMode"/>
<property name="arguments">
<list>
<value>true</value>
</list>
</property>
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="roots" class="com.devua.Roots"/>
<bean id="terracottaModeInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="com.devua.Roots"/>
<property name="targetMethod" value="setInTerracottaMode"/>
<property name="arguments">
<list>
<value>true</value>
</list>
</property>
</bean>
</beans>
Я скористався рішенням № 2.