У меня есть jar, который, будучи помещенным в tomcat lib, не делает никаких исключений или ошибок, где, как будто я помещаю тот же самый jar в войну, выдает исключение и не может получить бин.
Ограничения моего приложения: у меня не может быть определений bean-компонента xml.
Я пробовал другие возможные решения, упомянутые в разных темах, например
- Удаление cglib.jar и использование cglib-nodep.jar - не работает
- Добавление конструктора по умолчанию - не работает
Класс:
package com.test.data;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import com.test.MyFactoryConfig;
import com.test.MyUserInfoImpl;
public class UserApp {
private static AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(
MyFactoryConfig.class);
public UserApp() {
}
public String read(String id) {
String name = (MyUserInfoImpl) ctx.getBean("myBean").read(id);
return name;
}
}
Класс конфигурации:
package com.test;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyFactoryConfig {
@Bean
String testString() {
return new String("TestName");
}
@Bean
public MyUserInfoImpl myBean() {
MyUserInfoImpl bean = new MyUserInfoImpl();
bean.setName(testString());
return bean;
}
}
И исключение, когда я помещаю банку в файл войны
2018-11-27 11:34:25,140 124307 INFO [org.springframework.context.annotation.AnnotationConfigApplicationContext:583] (http-nio-9443-exec-2:::::) - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@695bb3c2: startup date [Tue Nov 27 11:34:25 PST 2018]; root of context hierarchy
Nov 27, 2018 11:34:25 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [action] in context with path [] threw exception [Filter execution threw an exception] with root cause
java.lang.NoSuchMethodException: com.test.MyFactoryConfig$$EnhancerBySpringCGLIB$$762d9e2a.CGLIB$SET_THREAD_CALLBACKS([Lorg.springframework.cglib.proxy.Callback;)
at java.lang.Class.getDeclaredMethod(Class.java:2130)
at org.springframework.cglib.proxy.Enhancer.getCallbacksSetter(Enhancer.java:809)
at org.springframework.cglib.proxy.Enhancer.access$000(Enhancer.java:63)
at org.springframework.cglib.proxy.Enhancer$EnhancerFactoryData.<init>(Enhancer.java:414)
at org.springframework.cglib.proxy.Enhancer.wrapCachedClass(Enhancer.java:709)
at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94)
at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:91)
at org.springframework.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61)
at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34)
at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:116)
at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:291)
at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:480)
at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:337)
at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:138)
at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:110)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:393)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:249)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:283)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:127)
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:687)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:525)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:84)
at com.test.data.UserApp.<clinit>(UserApp.java:15)