Spring Scanner - контейнер попсы и блатняка

Модераторы: Вий, Xanf

Вячеслав Викторови4
Сообщения: 3486
Зарегистрирован: 19 май 2015, 17:30

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение Вячеслав Викторови4 » 07 май 2019, 17:05

hellboy писал(а):
я все испробовал. все равно не работает

все рекомендации здесь выполнены:
https://stackoverflow.com/a/26096574/444079

есть ли у спринга отладочная консоль, чтобы посмотреть, что все таки загрузилось им?
сканер не находит ProjectTreeApi? Твоя конфигурация должна быть в корневом пэкадже, тогда он найдёт всё что лежит ниже, либо укажи сканеру где искать:
@ComponentScan({"com.my.package.first","com.my.package.second"})
логгинг для спринга целиком перевиди в дебаг и всё увидишь.

hellboy
Сообщения: 287
Зарегистрирован: 12 авг 2018, 22:42

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение hellboy » 08 май 2019, 16:27

Вячеслав Викторови4 писал(а):
hellboy писал(а):
я все испробовал. все равно не работает

все рекомендации здесь выполнены:
https://stackoverflow.com/a/26096574/444079

есть ли у спринга отладочная консоль, чтобы посмотреть, что все таки загрузилось им?
сканер не находит ProjectTreeApi? Твоя конфигурация должна быть в корневом пэкадже, тогда он найдёт всё что лежит ниже, либо укажи сканеру где искать:
@ComponentScan({"com.my.package.first","com.my.package.second"})
логгинг для спринга целиком перевиди в дебаг и всё увидишь.

[ERROR] Found a type [com.fdb.testbench.api.ProjectTreeApi] annotated as a component, but the type is not a concrete class. NOT adding to index file!!
[INFO] (X) Class not suitable 'com.ххх.ыыы.api.ProjectTreeApi' for annotation 'org.springframework.stereotype.Component'
[DEBUG] Checking for profile annotations on com.fdb.testbench.api.ProjectTreeApi$ProjectsGetQueryParams
[DEBUG] Checking for profile annotations on com.fdb.testbench.api.ProjectApi
[ERROR] Found a type [com.ххх.ыыы.api.ProjectApi] annotated as a component, but the type is not a concrete class. NOT adding to index file!!
[INFO] (X) Class not suitable 'com.fdb.testbench.api.ProjectApi' for annotation 'org.springframework.stereotype.Component'

hellboy
Сообщения: 287
Зарегистрирован: 12 авг 2018, 22:42

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение hellboy » 08 май 2019, 16:31

зачем интерфейс чем то маркировать?

hellboy
Сообщения: 287
Зарегистрирован: 12 авг 2018, 22:42

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение hellboy » 08 май 2019, 16:48

Got it !

[INFO] [talledLocalContainer] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.xxx.my.services.ProjectService]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.xxx.my.services.ProjectService.<init>()
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1105)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1050)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
[INFO] [talledLocalContainer] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:60)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:325)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:290)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:137)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[INFO] [talledLocalContainer] at java.lang.Thread.run(Thread.java:748)
[INFO] [talledLocalContainer] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com. ... .services.ProjectService]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com. .... .ProjectService.<init>()
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:85)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1098)
[INFO] [talledLocalContainer] ... 17 more
[INFO] [talledLocalContainer] Caused by: java.lang.NoSuchMethodException: com.. ... .services.ProjectService.<init>()
[INFO] [talledLocalContainer] at java.lang.Class.getConstructor0(Class.java:3082)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80)
[INFO] [talledLocalContainer] ... 18 more


т.е. каждому сприновскиому сервису нужен конструктор по умолчанию, иначе он не сможет добавить его в контейнер?

Вячеслав Викторови4
Сообщения: 3486
Зарегистрирован: 19 май 2015, 17:30

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение Вячеслав Викторови4 » 08 май 2019, 23:21

hellboy писал(а):зачем интерфейс чем то маркировать?
да нее, маркируешь реализацию, а инжектишь интерфейс. Тогда можно реализации через конфигурацию подменять, в тестах например можешь мок-сервисы заместо реальных инжектить.
это собственно основная идея IoC

Вячеслав Викторови4
Сообщения: 3486
Зарегистрирован: 19 май 2015, 17:30

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение Вячеслав Викторови4 » 08 май 2019, 23:28

hellboy писал(а):Got it !

[INFO] [talledLocalContainer] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectService': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.xxx.my.services.ProjectService]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.xxx.my.services.ProjectService.<init>()
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1105)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1050)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
[INFO] [talledLocalContainer] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:60)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:325)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:290)
[INFO] [talledLocalContainer] at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:137)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[INFO] [talledLocalContainer] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[INFO] [talledLocalContainer] at java.lang.Thread.run(Thread.java:748)
[INFO] [talledLocalContainer] Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com. ... .services.ProjectService]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com. .... .ProjectService.<init>()
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:85)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1098)
[INFO] [talledLocalContainer] ... 17 more
[INFO] [talledLocalContainer] Caused by: java.lang.NoSuchMethodException: com.. ... .services.ProjectService.<init>()
[INFO] [talledLocalContainer] at java.lang.Class.getConstructor0(Class.java:3082)
[INFO] [talledLocalContainer] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80)
[INFO] [talledLocalContainer] ... 18 more


т.е. каждому сприновскиому сервису нужен конструктор по умолчанию, иначе он не сможет добавить его в контейнер?
ну он как бы неявно есть, его компилятор сам добавляет, но суперкласс тоже должен безаргументный конструктор иметь. я не знаю, как у тебя там иерархия наследования реализована.

hellboy
Сообщения: 287
Зарегистрирован: 12 авг 2018, 22:42

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение hellboy » 09 май 2019, 16:28

Вячеслав Викторови4 писал(а):
hellboy писал(а):зачем интерфейс чем то маркировать?
да нее, маркируешь реализацию, а инжектишь интерфейс. Тогда можно реализации через конфигурацию подменять, в тестах например можешь мок-сервисы заместо реальных инжектить.
это собственно основная идея IoC
я это давно знаю. мен нижуя не понятно, почему жировский спринг в упор не видидт конфигурацию ?

т.е. классы с @Service он подбирает и пытается их создать с конструктором по умолчанию (т.к. в контейнере нет инстанса с указанным интерфейсом )

т.е. вашу мать основиной вопрос: почему вашу мать корректная с точки зрения спринга конфигурация не подниманется в рантайме жировским спрингом ?

конфигурация лежит на самом видном месте и не подхватывается. как это отлаживать?

зы. За спринг там у вас во франкфурте платят 70к минимум, да?

hellboy
Сообщения: 287
Зарегистрирован: 12 авг 2018, 22:42

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение hellboy » 09 май 2019, 17:22

ПОБЕДА!


оно наконец то увидело конфигурацию !

hellboy
Сообщения: 287
Зарегистрирован: 12 авг 2018, 22:42

Re: Spring Scanner - контейнер попсы и блатняка

Сообщение hellboy » 13 май 2019, 08:56

продолжение попсы и блатняка:

Код: Выделить всё

 Caused by: java.lang.NoClassDefFoundError: com.fdb.config.YamlPropertySourceFactory not found from bundle ...
 	at org.eclipse.gemini.blueprint.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:149)
 	at org.eclipse.gemini.blueprint.util.BundleDelegatingClassLoader.loadClass(BundleDelegatingClassLoader.java:211)
 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
 	at org.springframework.core.type.classreading.AnnotationReadingVisitorUtils.convertClassValues(AnnotationReadingVisitorUtils.java:66)
 	at org.springframework.core.type.classreading.AnnotationMetadataReadingVisitor.getAnnotationAttributes(AnnotationMetadataReadingVisitor.java:134)
 	at org.springframework.context.annotation.AnnotationConfigUtils.attributesFor(AnnotationConfigUtils.java:280)
 	at org.springframework.context.annotation.AnnotationBeanNameGenerator.determineBeanNameFromAnnotation(AnnotationBeanNameGenerator.java:90)
 	at org.springframework.context.annotation.AnnotationBeanNameGenerator.generateBeanName(AnnotationBeanNameGenerator.java:70)
 	at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:252)
 	at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:87)
 	at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)
 	at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)
 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:168)
 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:138)
 	at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)
 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
 	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
 	... 20 more
        Caused by: java.lang.NoClassDefFoundError: org/springframework/core/io/support/PropertySourceFactory
           at java.lang.ClassLoader.defineClass1(Native Method)
 	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2279)
 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1501)
 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
 	at org.apache.felix.framework.Felix.loadBundleClass(Felix.java:1844)
 	at org.apache.felix.framework.BundleImpl.loadClass(BundleImpl.java:937)
 	at org.eclipse.gemini.blueprint.util.BundleDelegatingClassLoader.findClass(BundleDelegatingClassLoader.java:135)
 	... 38 more
 Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.support.PropertySourceFactory not found by org.apache.servicemix.bundles.spring-core [11]
 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)
 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)
 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
 	at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1374)
 	at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1484)
 	at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)
 	at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)
 	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
помогите доре дополнить Import-Package, чтобы феликсовский OSGI, используемый атлассиановскими продуктами таки загрузил нужный класс:

Код: Выделить всё

<instructions>
    <!-- Add package to import here -->
    <Import-Package>
           org.springframework.osgi.*;resolution:="optional",
           org.eclipse.gemini.blueprint.*;resolution:="optional",
           *;resolution:=optional
     </Import-Package>

     <!-- Ensure plugin is spring powered -->
     <Spring-Context>*</Spring-Context>

     <!-- new instructions -->
     <DynamicImport-Package>*</DynamicImport-Package>
</instructions>


Ответить