¿Por qué Spring @Value es incompatible con @Controller?

Estoy buscando una mejor comprensión de este problema. Una solución es bastante simple, es decir, trasladar los datos de configuración a otra clase que no tenga proxies / consejos envueltos a su alrededor, pero creo que entender esto mejor me ayudará a evitar otros problemas relacionados en el futuro, así que me gustaría cualquier explicación. puede proporcionar.

Estoy usando Spring 3.1.0.RELEASE con Spring STS y el servidor vFabric tc. Implementé un pequeño servidor REST básico usando una clase @Controller. Eso es genial (realmente lo es), pero @Controller también es @Transactional, y entre eso y el tiempo de carga y el servidor vFabric tc, se rompe @Value.

<code>@Controller
@RequestMapping("/hello")
public class MyAPI {

    @Value("${my.property}")
    private String prop;
    ...

    @Transactional
    handleRequest(...) ...


}
</code>

Y un archivo de propiedades app.properties:

<code>my.property = SUCCESS
</code>

Esto funciona bien en JUnit, con la prueba obteniendo un objeto MyAPI que tiene el conjunto de propiedades establecido en "SUCCESS". Pero cuando la aplicación se carga en vFabric, supongo que el tiempo de carga se teje y se procesa. Pase lo que pase, se crearon dos instancias de MyAPI, una que tiene prop == "SUCCESS" y otra (que desafortunadamente es la que maneja la solicitud http) que tiene prop == "$ {my.prop}".

Así que en general llamo a esto un fracaso de la magia, que es mi mayor preocupación con el uso de cosas como AOP. Incluso con STS no sé cómo averiguar cuál es la causa detrás del problema o averiguar si se trata de un error grave. Si es un error, no sé si es un error en Spring, AspectJ, el tejedor de tiempo de carga o vFabric, por lo que ni siquiera sé dónde presentar un informe de errores.

Así que cualquier ayuda para entender esto sería apreciada. Gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta