Pregunta

Tengo un archivo beans.xml para una aplicación LDAP que estoy escribiendo. Estoy permitiendo al usuario la elección de varios LDAPContextSource. Para cada uno tengo un frijol diferente, por ejemplo

<bean id="ldapTemplate" class="yyy.LdapTemplate">
      <constructor-arg ref="contextSource1" />
</bean>
<bean id="contextSource1" class="xxx.LdapContextSource">
      ...
</bean>
<bean id="contextSource2" class="xxx.LdapContextSource">
      ...
</bean>
<bean id="contextSource3" class="xxx.LdapContextSource">
      ...
</bean>

Puede ver que solo uno de estos frijoles de origen de contexto se instancia, porque solo uno se refiere a uno por el bean LDAPTemplate. Sin embargo, cuando ejecuto mi aplicación, mis mensajes de registro de primavera en stdout proporcionan información sobre cada fuente de contexto, a pesar de que solo se depende de una.

25 de enero de 2011 11:56:36 am org.springframework.ldap.core.support.abstractContextSource AfterPropertIesset Información: Propiedad 'UserDN' no establecida - El contexto anónimo se utilizará para operaciones de lectura -escritura 25 de enero de 2011 11:56:37 AM org.springframework.ldap.core.support.abstractContextSource AfterPropertIesset Información: Propiedad 'UserDn' no establecida - El contexto anónimo se utilizará para las operaciones de lectura -escritura el 25 de enero de 2011 11:56:37 am Org.springfframework.ldap.core. Support.AbstractContextSource AfterPropertIesset Información: Propiedad 'UserDN' No establecida - El contexto anónimo se utilizará para operaciones de lectura -escritura

Mis preguntas son:

(1) ¿Qué está haciendo Spring con las fuentes de contexto a las que no se mencionan / dependen? Nunca deben ser instanciados en mi aplicación, y me preocupa que Spring esté proporcionando información de registro para cada uno de estos frijoles.

(2) ¿Debo comentar los frijoles de origen de contexto que no se usan en la aplicación? ¿Cuáles son las consecuencias de dejarlos sin comodidad? ¿Cuál es la práctica estándar?

Gracias,
ktm

¿Fue útil?

Solución

Tal vez podrías ver Carga perezosa de frijoles. Aquí está la explicación relevante de los documentos de primavera 2.5.x ...

El comportamiento predeterminado para las implementaciones de AplicationContext es preinstanciar ansiosamente todos los frijoles singleton al inicio. La preinstanciación significa que un ApplicationContext creará y configurará ansiosamente todos sus frijoles singleton como parte de su proceso de inicialización. En general, esto es algo bueno, porque significa que cualquier error en la configuración o en el entorno circundante se descubrirá inmediatamente (en lugar de posiblemente horas o incluso días en el futuro).

Sin embargo, hay momentos en que este comportamiento no es lo que se quiere. Si no desea que un frijol singleton se preinestencie cuando use un aplicaciones de aplicación, puede controlarlo selectivamente marcando una definición de frijol como inicializado perezoso. Un frijol inicializado perezosamente indica al contenedor del COI si se debe crear o no una instancia de frijol al inicio o cuando se solicita por primera vez.

En aras de la completa aquí hay un ejemplo ...

<bean id="contextSource1" class="xxx.LdapContextSource" lazy-init="true"/>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top