download original
spring @Autowired wiring-up of objects created using operator "new":
package org.springframework.beans.factory.aspectj;
public abstract aspect AbstractDependencyInjectionAspect {
...
/**
* Post-construction configuration.
*/
@SuppressAjWarnings("adviceDidNotMatch")
after(Object bean) returning :
beanConstruction(bean) && postConstructionCondition() && inConfigurableBean() {
configureBean(bean);
}
...
}
definitions of the pointcuts:
(from AbstractInterfaceDrivenDependencyInjectionAspect)
/**
* Select initialization join point as object construction
*/
public pointcut beanConstruction(Object bean) :
initialization(ConfigurableObject+.new(..)) && this(bean); //see declare parents below
(from AnnotationBeanConfigurerAspect)
public pointcut inConfigurableBean() : @this(Configurable);
declare parents: @Configurable * implements ConfigurableObject;
(from AbstractDependencyInjectionAspect)
private pointcut postConstructionCondition() :
mostSpecificSubTypeConstruction() && !preConstructionConfiguration();
/**
* Select join points in beans to be configured prior to construction?
* By default, use post-construction injection matching the default in the Configurable annotation.
*/
public pointcut preConstructionConfiguration() : if(false);
/**
* Select the most-specific initialization join point
* (most concrete class) for the initialization of an instance.
*/
public pointcut mostSpecificSubTypeConstruction() :
if(thisJoinPoint.getSignature().getDeclaringType() == thisJoinPoint.getThis().getClass());
complete backtrace (autowired setter is FormTemplate#setFormRepository):
Thread [main] (Suspended (breakpoint at line 44 in FormTemplate))
FormTemplate.setFormRepository(FormTemplateRepository) line: 44
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(Object, String, PropertyValues) line: 601
InjectionMetadata.inject(Object, String, PropertyValues) line: 84
AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(PropertyValues, PropertyDescriptor[], Object, String) line: 283
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).populateBean(String, AbstractBeanDefinition, BeanWrapper) line: 1074
DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).autowireBeanProperties(Object, int, boolean) line: 374
BeanConfigurerSupport.configureBean(Object) line: 140
AnnotationBeanConfigurerAspect.configureBean(Object) line: 59
AnnotationBeanConfigurerAspect(AbstractDependencyInjectionAspect).ajc$afterReturning$org_springframework_beans_factory_aspectj_AbstractDependencyInjectionAspect$2$1ea6722c(Object) line: 89
<unknown receiving type>(FormTemplate).<init>() line: 28
NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: 39
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27
Constructor<T>.newInstance(Object...) line: 513
PojoInstantiator.instantiate() line: 111
PojoInstantiator.instantiate(Serializable) line: 123
PojoEntityTuplizer(AbstractEntityTuplizer).instantiate(Serializable, SessionImplementor) line: 606
SingleTableEntityPersister(AbstractEntityPersister).instantiate(Serializable, SessionImplementor) line: 3888
SessionImpl.instantiate(EntityPersister, Serializable) line: 1412
SessionImpl.instantiate(String, Serializable) line: 1401
OneToManyLoader(Loader).instanceNotYetLoaded(ResultSet, int, Loadable, String, EntityKey, LockMode, EntityKey, Object, List, SessionImplementor) line: 1362
OneToManyLoader(Loader).getRow(ResultSet, Loadable[], EntityKey[], Object, EntityKey, LockMode[], List, SessionImplementor) line: 1271
OneToManyLoader(Loader).getRowFromResultSet(ResultSet, SessionImplementor, QueryParameters, LockMode[], EntityKey, List, EntityKey[], boolean) line: 619
OneToManyLoader(Loader).doQuery(SessionImplementor, QueryParameters, boolean) line: 745
OneToManyLoader(Loader).doQueryAndInitializeNonLazyCollections(SessionImplementor, QueryParameters, boolean) line: 270
OneToManyLoader(Loader).loadCollection(SessionImplementor, Serializable, Type) line: 2082
OneToManyLoader(CollectionLoader).initialize(Serializable, SessionImplementor) line: 62
OneToManyPersister(AbstractCollectionPersister).initialize(Serializable, SessionImplementor) line: 628
DefaultInitializeCollectionEventListener.onInitializeCollection(InitializeCollectionEvent) line: 83
SessionImpl.initializeCollection(PersistentCollection, boolean) line: 1853
PersistentSet(AbstractPersistentCollection).forceInitialization() line: 479
StatefulPersistenceContext.initializeNonLazyCollections() line: 899
QueryLoader(Loader).doQueryAndInitializeNonLazyCollections(SessionImplementor, QueryParameters, boolean) line: 275
QueryLoader(Loader).doList(SessionImplementor, QueryParameters) line: 2449
QueryLoader(Loader).listIgnoreQueryCache(SessionImplementor, QueryParameters) line: 2192
QueryLoader(Loader).list(SessionImplementor, QueryParameters, Set, Type[]) line: 2187
QueryLoader.list(SessionImplementor, QueryParameters) line: 452
QueryTranslatorImpl.list(SessionImplementor, QueryParameters) line: 363
HQLQueryPlan.performList(QueryParameters, SessionImplementor) line: 196
SessionImpl.list(String, QueryParameters) line: 1258
QueryImpl.list() line: 102
QueryImpl<X>.getSingleResult() line: 269
Event.findEventByUniqueIdForStudy_aroundBody10(String, Study, JoinPoint) line: 177
Event.findEventByUniqueIdForStudy(String, Study) line: 1
EventEntryConverter.convert(Object, ConversionContext) line: 26
Importer.importBaseXmlFragment(Object, String) line: 67
Importer.importBaseXml(Object, String) line: 40
Importer.importBaseXml(InputStream, String) line: 32
Importer.importBaseXml(String, String) line: 24
ImportTest.testImportData() line: 33
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 597
FrameworkMethod$1.runReflectiveCall() line: 44
FrameworkMethod$1(ReflectiveCallable).run() line: 15
FrameworkMethod.invokeExplosively(Object, Object...) line: 41
InvokeMethod.evaluate() line: 20
RunBeforeTestMethodCallbacks.evaluate() line: 74
RunAfterTestMethodCallbacks.evaluate() line: 82
SpringRepeat.evaluate() line: 72
SpringJUnit4ClassRunner.runChild(FrameworkMethod, RunNotifier) line: 240
SpringJUnit4ClassRunner(BlockJUnit4ClassRunner).runChild(Object, RunNotifier) line: 50
ParentRunner$3.run() line: 193
ParentRunner$1.schedule(Runnable) line: 52
SpringJUnit4ClassRunner(ParentRunner<T>).runChildren(RunNotifier) line: 191
ParentRunner<T>.access$000(ParentRunner, RunNotifier) line: 42
ParentRunner$2.evaluate() line: 184
RunBeforeTestClassCallbacks.evaluate() line: 61
RunAfterTestClassCallbacks.evaluate() line: 70
SpringJUnit4ClassRunner(ParentRunner<T>).run(RunNotifier) line: 236
SpringJUnit4ClassRunner.run(RunNotifier) line: 180
JUnit4TestMethodReference(JUnit4TestReference).run(TestExecution) line: 49
TestExecution.run(ITestReference[]) line: 38
RemoteTestRunner.runTests(String[], String, TestExecution) line: 467
RemoteTestRunner.runTests(TestExecution) line: 683
RemoteTestRunner.run() line: 390
RemoteTestRunner.main(String[]) line: 197
back to springframework
(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>