@Configurable-Beans not working with JPA-EntityListeners in Spring Boot -
i having strange problem custom jpa-entity listener i've created in spring boot application. i'm trying use springs @configurable mechanism configure entitylistener (as seen in springs auditingentitylistener) spring refuses recognize listener used in @entitylisteners-annotation on jpa entity. if not configured on jpa entity, listener gets wired/configured spring should.
i've created example project junit-test demonstrate problem: https://github.com/chrisi/aopconfig/find/master
@springbootapplication @enablespringconfigured @enableloadtimeweaving public class application { public static void main(string[] args) throws exception { springapplication.run(application.class, args); } } the entitylistener:
/** * bean not instanciated spring should configured spring * because of {@link configurable}-annotation. * <p> * configuration works if <code>unmanagedbean</code> not used <code>entitylistener</code> * via {@link javax.persistence.entitylisteners}-annotation. * * @see fooentity */ @configurable public class unmanagedbean { @autowired private managedbean bean; public int getvalue() { return bean.getvalue(); } } the bean want injected in entitylistener/unmanagedbean:
/** * bean instanciated/managed spring , injected * {@link unmanagedbean} in case <code>unmanagedbean</code> not used jpa-entitylistener. */ @component @data public class managedbean { private int value = 42; } the entity listener should used:
/** * simple entity's purpose demonstrate * annotated <code>@entitylisteners({unmanagedbean.class})</code> * springs configurable mechanism not longer work on {@link unmanagedbean} * , therefore <code>configurabletest.testconfigureunmanagedbean()</code> fails. */ @entity @entitylisteners({unmanagedbean.class}) // uncomment make test fail public class fooentity { @id private long id; private string bar; } and test shows wiring not working listener used:
@runwith(springjunit4classrunner.class) @springapplicationconfiguration(classes = application.class) public class configurabletest { /** * test checks if managedbean injected unmanagedbean * spring after created <code>new</code> */ @test public void testconfigureunmanagedbean() { unmanagedbean edo = new unmanagedbean(); int val = edo.getvalue(); assert.assertequals(42, val); } } the junit-test (the wiring of entitylistener/managedbean) fails annotation @entitylisteners({unmanagedbean.class}) in fooentity activated.
is bug or did miss else?
in order run test have use -javaagent:spring-instrument-4.1.6.release.jar on commandline provide jar file in working directory.
this "condensed" version of question asked earlier: @configurable not recognized in springboot application
Comments
Post a Comment