tutorial tools started initializr framework java spring

java - tools - spring wikipedia



Inicialización de frijol de primavera con el método de múltiples arg (2)

Es posible usando el MethodInvokingFactoryBean (Spring 4.x 5.x ) (No es mi idea, acabo de encontrarlo en este foro: http://forum.springsource.org/archive/index.php/t-16354.html )

SomeClass someobject = new SomeClass(); someobject.set("String1","String2");

<bean id="someobject" class="SomeClass" /> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject" ref="someobject"> <property name="targetMethod" value="set"> <property name="arguments"> <list> <value>String1</value> <value>String2</value> </list> </property> </bean>

Me gustaría crear el siguiente Spring Bean (un monitor JMX) que tiene un método setThresholds (Número alto de umbral, Número bajo de umbral) .

¿Puedo invocar el método (con dos argumentos) en la configuración? No quiero escribir códigos para invocarlo.

<bean id="myMonitor" class="javax.management.monitor.GaugeMonitor" init-method="start"> <property name="observedObject"> <bean class="javax.management.ObjectName"> <constructor-arg value="test.jmx:name=testBean1" /> </bean> </property> <property name="observedAttribute" value="testProperty" /> <property name="granularityPeriod"> <bean class="java.lang.Float"> <constructor-arg value="1000" /> </bean> </property> </bean>


Nunca he visto esto hecho. La gran idea de Spring es que creas e inicializas beans directos. Por lo tanto, los únicos métodos que se llamarán son, por lo tanto, los argumentos individuales Setters (...) y Constructors. La definición de lo que está soportado estará en el siguiente esquema:

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

Su forma de solucionar este problema es lograr que su bean implemente InitializingBean y llame a su método en el método void afterPropertiesSet() :

p.ej:

public void setHighThreadHold(Number highThreshHold) {} public void setLowThreashHold(Number lowThreadHold) {} public void afterPropertiesSet() { setThresholds(highThreshold,lowThreshold); }