Skip to content

Shows issues with spring BenaProxyFactory and any type-based search (e.g. Provider)

License

Notifications You must be signed in to change notification settings

bironran/spring_issues_proxy_factory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spring_issues_proxy_factory

Shows issues with spring BenaProxyFactory and any type-based search (e.g. Provider)

The issue stem from having Spring perform a type-search when we also have a bean factory that relies on another bean (e.g. ProxyFactoryBean) in the application context. In order to find the object type, Spring instantiate the bean factory. The factory is fully instantiated and initialized, which means that the dependencies are instantiated and supplied as well. However, if the dependencies cannot, at that time, be fully instantiated, the whole process ends with an exception that is swallowed in Spring and the factory is deemed "not cache-able". When we have multiple such Dependant beans and multiple type-searches, we reach a very high number of instantiations - exponential growth for every new factory and multiplication for every type search.

In a complex application this has been observed to cause 100,000's of objects to be instantiated (with about 500 beans defined), causing startup to take multiple minutes and GC to spike.

Sample

The sample has 5 beans. Each has a Provider<DummyBeanA> to trigger a type-search during bean initialization. The beans are declared in the applicationContext.xml in order (bean1, bean2...) and for each bean we declare a ProxyFactoryBean (bean1Factory, bean2Factory...) also in order. Each bean rely on the previous bean (bean 5 on bean 4, bean 4 on bean 3). Note that order of the beans in the xml and their dependencies are inverse on purpose. The type-search scans the beans in the order they are discovered (either from component-scan or from the xml) and the inverse order cause the beans to be impossible to initialize in the XMl order (throwing the aforementioned exception).

In the above example the flow is (fully managed by Spring):

  • Instantiate bean1. Try to initialize bean1 and discover it has a Provider<X>.
    • Go through all BeanDefinition in the context. For each:
      • if it's a "normal" bean, evaluate the class to see if it fits.
      • if it's a FactoryBean, try to instantiate and initialize the FactoryBean to see what "getObjectType()" would return.
        • In order to initialize bean2Factory, it needs to be fed with an instance of bean2. So Spring tries to instantiate and initialize bean2.
          • for bean2 to be initialized it needs to satisfy the Provider<X> - triggering the whole cycle again.
          • only after going through the cycle 4 more times (beans 2-5), Spring discovered that bean2 cannot be initialized since it relies on bean3 - causing Spring to throw a cyclic dependency error.
      • If the FactoryObject would have been created correctly, Spring now asks for the type and cache the response ("good path").
      • However we got an exception (the cyclic dependency error) it's caught and ignored, but the result isn't cached - so if we get another bean it'll do the same thing again (and again and again...)

Solution

Apparently it's easy - replace <property name="target" ref="beanName"/> with <property name="targetName"> <idref bean="beanName"/> </property> <property name="targetClass" value="beanClass"/>

Execution output

+65: (Bean1): Constructor (times: 1, total constructions 1)
+94: (Bean2): Constructor (times: 1, total constructions 2)
+154: (Bean3): Constructor (times: 1, total constructions 3)
+158: (Bean4): Constructor (times: 1, total constructions 4)
+165: (Bean5): Constructor (times: 1, total constructions 5)
+174: (Bean5): Constructor (times: 2, total constructions 6)
+175: (Bean4): Constructor (times: 2, total constructions 7)
+176: (Bean4): Constructor (times: 3, total constructions 8)
+177: (Bean4): Constructor (times: 4, total constructions 9)
+178: (Bean3): Constructor (times: 2, total constructions 10)
+179: (Bean5): Constructor (times: 3, total constructions 11)
+181: (Bean5): Constructor (times: 4, total constructions 12)
+181: (Bean3): Constructor (times: 3, total constructions 13)
+183: (Bean3): Constructor (times: 4, total constructions 14)
+184: (Bean5): Constructor (times: 5, total constructions 15)
+190: (Bean5): Constructor (times: 6, total constructions 16)
+200: (Bean3): Constructor (times: 5, total constructions 17)
+201: (Bean4): Constructor (times: 5, total constructions 18)
+202: (Bean4): Constructor (times: 6, total constructions 19)
+203: (Bean3): Constructor (times: 6, total constructions 20)
+217: (Bean3): Constructor (times: 7, total constructions 21)
+220: (Bean4): Constructor (times: 7, total constructions 22)
+220: (Bean3): Constructor (times: 8, total constructions 23)
+226: (Bean3): Constructor (times: 9, total constructions 24)
+227: (Bean3): Constructor (times: 10, total constructions 25)
+228: (Bean4): Constructor (times: 8, total constructions 26)
+229: (Bean5): Constructor (times: 7, total constructions 27)
+230: (Bean5): Constructor (times: 8, total constructions 28)
+230: (Bean4): Constructor (times: 9, total constructions 29)
+231: (Bean4): Constructor (times: 10, total constructions 30)
+232: (Bean4): Constructor (times: 11, total constructions 31)
+233: (Bean5): Constructor (times: 9, total constructions 32)
+235: (Bean5): Constructor (times: 10, total constructions 33)
+252: === Init done
+252: (Bean1): Called NOP
+252: (Bean2): Called NOP
+252: (Bean3): Called NOP
+252: (Bean4): Called NOP
+252: (Bean5): Called NOP
+332: (Bean1$$EnhancerBySpringCGLIB$$79cb3e3e): Constructor (times: 1, total constructions 34)
+351: (Bean1): Called NOP
+358: (Bean2$$EnhancerBySpringCGLIB$$693c271f): Constructor (times: 1, total constructions 35)
+365: (Bean2): Called NOP
+373: (Bean3$$EnhancerBySpringCGLIB$$58ad1000): Constructor (times: 1, total constructions 36)
+380: (Bean3): Called NOP
+387: (Bean4$$EnhancerBySpringCGLIB$$481df8e1): Constructor (times: 1, total constructions 37)
+412: (Bean4): Called NOP
+423: (Bean5$$EnhancerBySpringCGLIB$$378ee1c2): Constructor (times: 1, total constructions 38)
+435: (Bean5): Called NOP
+435: === NOP done

Execution output with logging post processor (see application context xml)

+0: 		Spring startup: before instantiation of [bean1] of [com.rb.springissues.sample.Bean1]
+1: (Bean1): Constructor (times: 1, total constructions 1)
+21: 		Spring startup: after instantiation of [bean1] of [com.rb.springissues.sample.Bean1]
+32: 		Spring startup: before initialization of [bean1] of [com.rb.springissues.sample.Bean1]
+33: 		Spring startup: after initialization of [bean1] of [com.rb.springissues.sample.Bean1]
+33: 		Spring startup summary: time for bean [bean1] of [com.rb.springissues.sample.Bean1]: instantiation: [21], initialization [1], total [33]
+33: 		Spring startup: before instantiation of [bean2] of [com.rb.springissues.sample.Bean2]
+33: (Bean2): Constructor (times: 1, total constructions 2)
+40: 		Spring startup: after instantiation of [bean2] of [com.rb.springissues.sample.Bean2]
+42: 		Spring startup: before instantiation of [bean1Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+58: 		Spring startup: after instantiation of [bean1Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+139: 		Spring startup: before initialization of [bean1Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+139: 		Spring startup: after initialization of [bean1Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+139: 		Spring startup summary: time for bean [bean1Factory] of [org.springframework.aop.framework.ProxyFactoryBean]: instantiation: [16], initialization [0], total [97]
+139: 		Spring startup: before instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+147: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+149: 		Spring startup: before instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+154: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+154: 		Spring startup: before instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+154: (Bean3): Constructor (times: 1, total constructions 3)
+155: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+158: *** after inst: already defined bean2Factory
+158: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+158: 		Spring startup: before instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+161: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+162: 		Spring startup: before instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+162: (Bean4): Constructor (times: 1, total constructions 4)
+163: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+166: *** after inst: already defined bean2Factory
+166: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+168: 		Spring startup: before instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+180: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+181: 		Spring startup: before instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+181: (Bean5): Constructor (times: 1, total constructions 5)
+182: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+184: *** after inst: already defined bean2Factory
+184: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+189: *** after inst: already defined bean5Factory
+189: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+189: (Bean5): Constructor (times: 2, total constructions 6)
+189: *** after inst: already defined bean5
+189: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+189: *** after inst: already defined bean2Factory
+189: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+189: *** after inst: already defined bean4Factory
+189: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+189: (Bean4): Constructor (times: 2, total constructions 7)
+190: *** after inst: already defined bean4
+190: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+190: *** after inst: already defined bean2Factory
+190: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+192: (Bean4): Constructor (times: 3, total constructions 8)
+192: *** after inst: already defined bean4
+192: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+195: *** after inst: already defined bean2Factory
+195: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+196: *** after inst: already defined bean4Factory
+196: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+198: *** after inst: already defined bean4Factory
+198: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+198: (Bean4): Constructor (times: 4, total constructions 9)
+198: *** after inst: already defined bean4
+198: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+200: *** after inst: already defined bean2Factory
+200: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+201: *** after inst: already defined bean3Factory
+201: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+201: (Bean3): Constructor (times: 2, total constructions 10)
+201: *** after inst: already defined bean3
+201: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+202: *** after inst: already defined bean2Factory
+202: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+208: *** after inst: already defined bean5Factory
+208: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+209: (Bean5): Constructor (times: 3, total constructions 11)
+209: *** after inst: already defined bean5
+209: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+209: *** after inst: already defined bean2Factory
+209: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+214: *** after inst: already defined bean5Factory
+214: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+214: (Bean5): Constructor (times: 4, total constructions 12)
+214: *** after inst: already defined bean5
+214: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+216: *** after inst: already defined bean2Factory
+216: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+216: *** after inst: already defined bean3Factory
+216: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+216: (Bean3): Constructor (times: 3, total constructions 13)
+216: *** after inst: already defined bean3
+216: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+218: *** after inst: already defined bean2Factory
+218: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+220: (Bean3): Constructor (times: 4, total constructions 14)
+220: *** after inst: already defined bean3
+220: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+220: *** after inst: already defined bean2Factory
+220: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+226: *** after inst: already defined bean3Factory
+226: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+231: *** after inst: already defined bean5Factory
+231: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+231: (Bean5): Constructor (times: 5, total constructions 15)
+231: *** after inst: already defined bean5
+231: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+234: *** after inst: already defined bean2Factory
+234: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+234: *** after inst: already defined bean3Factory
+234: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+235: *** after inst: already defined bean5Factory
+235: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+235: (Bean5): Constructor (times: 6, total constructions 16)
+235: *** after inst: already defined bean5
+235: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+235: *** after inst: already defined bean2Factory
+235: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+236: *** after inst: already defined bean3Factory
+236: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+236: (Bean3): Constructor (times: 5, total constructions 17)
+236: *** after inst: already defined bean3
+236: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+242: *** after inst: already defined bean2Factory
+242: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+242: *** after inst: already defined bean4Factory
+242: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+242: (Bean4): Constructor (times: 5, total constructions 18)
+242: *** after inst: already defined bean4
+242: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+243: *** after inst: already defined bean2Factory
+243: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+247: *** after inst: already defined bean4Factory
+247: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+247: (Bean4): Constructor (times: 6, total constructions 19)
+247: *** after inst: already defined bean4
+247: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+247: *** after inst: already defined bean2Factory
+247: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+247: *** after inst: already defined bean3Factory
+247: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+248: (Bean3): Constructor (times: 6, total constructions 20)
+248: *** after inst: already defined bean3
+248: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+249: *** after inst: already defined bean2Factory
+249: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+251: (Bean3): Constructor (times: 7, total constructions 21)
+251: *** after inst: already defined bean3
+251: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+251: *** after inst: already defined bean2Factory
+251: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+252: *** after inst: already defined bean3Factory
+252: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+257: (Bean4): Constructor (times: 7, total constructions 22)
+257: *** after inst: already defined bean4
+257: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+260: *** after inst: already defined bean2Factory
+260: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+261: *** after inst: already defined bean3Factory
+261: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+261: (Bean3): Constructor (times: 8, total constructions 23)
+261: *** after inst: already defined bean3
+261: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+261: *** after inst: already defined bean2Factory
+261: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+261: *** after inst: already defined bean4Factory
+261: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+262: *** after inst: already defined bean4Factory
+262: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+263: (Bean3): Constructor (times: 9, total constructions 24)
+263: *** after inst: already defined bean3
+263: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+263: *** after inst: already defined bean2Factory
+263: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+263: *** after inst: already defined bean3Factory
+263: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+263: *** after inst: already defined bean4Factory
+263: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+265: 		Spring startup: before initialization of [bean2] of [com.rb.springissues.sample.Bean2]
+265: 		Spring startup: after initialization of [bean2] of [com.rb.springissues.sample.Bean2]
+265: 		Spring startup summary: time for bean [bean2] of [com.rb.springissues.sample.Bean2]: instantiation: [7], initialization [0], total [232]
+265: (Bean3): Constructor (times: 10, total constructions 25)
+266: *** after inst: already defined bean3
+266: 		Spring startup: after instantiation of [bean3] of [com.rb.springissues.sample.Bean3]
+266: *** after inst: already defined bean2Factory
+270: 		Spring startup: after instantiation of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+271: 		Spring startup: before initialization of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+271: 		Spring startup: after initialization of [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+271: 		Spring startup summary: time for bean [bean2Factory] of [org.springframework.aop.framework.ProxyFactoryBean]: instantiation: [127], initialization [0], total [132]
+271: *** after inst: already defined bean3Factory
+271: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+271: *** after inst: already defined bean4Factory
+271: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+271: (Bean4): Constructor (times: 8, total constructions 26)
+271: *** after inst: already defined bean4
+271: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+271: *** after inst: already defined bean3Factory
+271: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+272: *** after inst: already defined bean5Factory
+272: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+272: (Bean5): Constructor (times: 7, total constructions 27)
+272: *** after inst: already defined bean5
+272: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+272: *** after inst: already defined bean3Factory
+272: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+273: *** after inst: already defined bean5Factory
+273: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+273: (Bean5): Constructor (times: 8, total constructions 28)
+273: *** after inst: already defined bean5
+273: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+274: *** after inst: already defined bean3Factory
+274: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+274: *** after inst: already defined bean4Factory
+274: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+274: (Bean4): Constructor (times: 9, total constructions 29)
+274: *** after inst: already defined bean4
+274: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+274: *** after inst: already defined bean3Factory
+274: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+275: (Bean4): Constructor (times: 10, total constructions 30)
+275: *** after inst: already defined bean4
+275: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+276: *** after inst: already defined bean3Factory
+276: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+276: *** after inst: already defined bean4Factory
+276: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+278: 		Spring startup: before initialization of [bean3] of [com.rb.springissues.sample.Bean3]
+278: 		Spring startup: after initialization of [bean3] of [com.rb.springissues.sample.Bean3]
+278: 		Spring startup summary: time for bean [bean3] of [com.rb.springissues.sample.Bean3]: instantiation: [112], initialization [0], total [124]
+278: (Bean4): Constructor (times: 11, total constructions 31)
+278: *** after inst: already defined bean4
+278: 		Spring startup: after instantiation of [bean4] of [com.rb.springissues.sample.Bean4]
+278: *** after inst: already defined bean3Factory
+278: 		Spring startup: after instantiation of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+279: 		Spring startup: before initialization of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+279: 		Spring startup: after initialization of [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+279: 		Spring startup summary: time for bean [bean3Factory] of [org.springframework.aop.framework.ProxyFactoryBean]: instantiation: [129], initialization [0], total [130]
+279: *** after inst: already defined bean4Factory
+279: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+279: *** after inst: already defined bean5Factory
+279: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+279: (Bean5): Constructor (times: 9, total constructions 32)
+279: *** after inst: already defined bean5
+279: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+280: *** after inst: already defined bean4Factory
+280: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+285: 		Spring startup: before initialization of [bean4] of [com.rb.springissues.sample.Bean4]
+285: 		Spring startup: after initialization of [bean4] of [com.rb.springissues.sample.Bean4]
+285: 		Spring startup summary: time for bean [bean4] of [com.rb.springissues.sample.Bean4]: instantiation: [116], initialization [0], total [123]
+285: (Bean5): Constructor (times: 10, total constructions 33)
+285: *** after inst: already defined bean5
+285: 		Spring startup: after instantiation of [bean5] of [com.rb.springissues.sample.Bean5]
+285: *** after inst: already defined bean4Factory
+285: 		Spring startup: after instantiation of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+286: 		Spring startup: before initialization of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+286: 		Spring startup: after initialization of [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+286: 		Spring startup summary: time for bean [bean4Factory] of [org.springframework.aop.framework.ProxyFactoryBean]: instantiation: [127], initialization [0], total [128]
+286: *** after inst: already defined bean5Factory
+286: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+287: 		Spring startup: before initialization of [bean5] of [com.rb.springissues.sample.Bean5]
+287: 		Spring startup: after initialization of [bean5] of [com.rb.springissues.sample.Bean5]
+287: 		Spring startup summary: time for bean [bean5] of [com.rb.springissues.sample.Bean5]: instantiation: [104], initialization [0], total [106]
+287: *** after inst: already defined bean5Factory
+287: 		Spring startup: after instantiation of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+287: 		Spring startup: before initialization of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+287: 		Spring startup: after initialization of [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]
+287: 		Spring startup summary: time for bean [bean5Factory] of [org.springframework.aop.framework.ProxyFactoryBean]: instantiation: [119], initialization [0], total [119]
+287: 		Spring startup: before instantiation of [aProvider] of [com.rb.springissues.sample.DummyBeanAProvider]
+292: 		Spring startup: after instantiation of [aProvider] of [com.rb.springissues.sample.DummyBeanAProvider]
+292: 		Spring startup: before initialization of [aProvider] of [com.rb.springissues.sample.DummyBeanAProvider]
+293: 		Spring startup: after initialization of [aProvider] of [com.rb.springissues.sample.DummyBeanAProvider]
+293: 		Spring startup summary: time for bean [aProvider] of [com.rb.springissues.sample.DummyBeanAProvider]: instantiation: [5], initialization [0], total [5]
+296: === Init done
+296: (Bean1): Called NOP
+296: (Bean2): Called NOP
+296: (Bean3): Called NOP
+296: (Bean4): Called NOP
+296: (Bean5): Called NOP
+373: (Bean1$$EnhancerBySpringCGLIB$$79cb3e3e): Constructor (times: 1, total constructions 34)
+373: *** after init: already defined bean1Factory
+373: 		Spring startup: after initialization of [bean1Factory] of [com.rb.springissues.sample.Bean1$$EnhancerBySpringCGLIB$$79cb3e3e]
+373: 		Spring startup summary: time for bean [bean1Factory] of [com.rb.springissues.sample.Bean1$$EnhancerBySpringCGLIB$$79cb3e3e]: instantiation: [16], initialization [234], total [331]
+392: (Bean1): Called NOP
+400: (Bean2$$EnhancerBySpringCGLIB$$693c271f): Constructor (times: 1, total constructions 35)
+400: *** after init: already defined bean2Factory
+400: 		Spring startup: after initialization of [bean2Factory] of [com.rb.springissues.sample.Bean2$$EnhancerBySpringCGLIB$$693c271f]
+400: 		Spring startup summary: time for bean [bean2Factory] of [com.rb.springissues.sample.Bean2$$EnhancerBySpringCGLIB$$693c271f]: instantiation: [127], initialization [129], total [261]
+417: (Bean2): Called NOP
+444: (Bean3$$EnhancerBySpringCGLIB$$58ad1000): Constructor (times: 1, total constructions 36)
+445: *** after init: already defined bean3Factory
+445: 		Spring startup: after initialization of [bean3Factory] of [com.rb.springissues.sample.Bean3$$EnhancerBySpringCGLIB$$58ad1000]
+445: 		Spring startup summary: time for bean [bean3Factory] of [com.rb.springissues.sample.Bean3$$EnhancerBySpringCGLIB$$58ad1000]: instantiation: [129], initialization [166], total [296]
+461: (Bean3): Called NOP
+471: (Bean4$$EnhancerBySpringCGLIB$$481df8e1): Constructor (times: 1, total constructions 37)
+471: *** after init: already defined bean4Factory
+471: 		Spring startup: after initialization of [bean4Factory] of [com.rb.springissues.sample.Bean4$$EnhancerBySpringCGLIB$$481df8e1]
+471: 		Spring startup summary: time for bean [bean4Factory] of [com.rb.springissues.sample.Bean4$$EnhancerBySpringCGLIB$$481df8e1]: instantiation: [127], initialization [185], total [313]
+477: (Bean4): Called NOP
+499: (Bean5$$EnhancerBySpringCGLIB$$378ee1c2): Constructor (times: 1, total constructions 38)
+499: *** after init: already defined bean5Factory
+499: 		Spring startup: after initialization of [bean5Factory] of [com.rb.springissues.sample.Bean5$$EnhancerBySpringCGLIB$$378ee1c2]
+499: 		Spring startup summary: time for bean [bean5Factory] of [com.rb.springissues.sample.Bean5$$EnhancerBySpringCGLIB$$378ee1c2]: instantiation: [119], initialization [212], total [331]
+515: (Bean5): Called NOP
+516: === NOP done

About

Shows issues with spring BenaProxyFactory and any type-based search (e.g. Provider)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages