Exception

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Plugin#UserServiceImpl': Could not generate CGLIB subclass of class test250410.service.impl.UserServiceImpl: Common causes of this problem include using a final class or a non-visible class

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:337)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200)
    at com.allstar.dev.SpringTest.test01(SpringTest.java:362)

Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class test250410.service.impl.UserServiceImpl: Common causes of this problem include using a final class or a non-visible class
    at org.springframework.aop.framework.CglibAopProxy.buildProxy(CglibAopProxy.java:230)
    at org.springframework.aop.framework.CglibAopProxy.getProxy(CglibAopProxy.java:163)
    at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.buildProxy(AbstractAutoProxyCreator.java:519)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:466)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:371)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:320)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:438)

Caused by: org.springframework.cglib.core.CodeGenerationException: java.lang.ClassNotFoundException-->test250410.service.impl.UserServiceImpl$$SpringCGLIB$$0
    at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:380)
    at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:575)
    at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.lambda$new$1(AbstractClassGenerator.java:107)
    at org.springframework.cglib.core.internal.LoadingCache.lambda$createEntry$1(LoadingCache.java:52)
    at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:317)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
    at --- Async.Stack.Trace --- (captured by IntelliJ IDEA debugger)

Caused by: java.lang.ClassNotFoundException: test250410.service.impl.UserServiceImpl$$SpringCGLIB$$0
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:534)
    at java.base/java.lang.Class.forName(Class.java:513)
    at org.springframework.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:559)
    at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:371)

Code

The UserServiceImpl class in the jar:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, UserEntity>
        implements UserService {

    @Transactional(rollbackFor = Exception.class)
    public List<UserEntity> test(String username) {
        System.out.println(DbOperation.getCurrentConnection());
        return lambdaQuery().eq(!StringUtils.isBlank(username), UserEntity::getUsername, username)
                .list();
    }
}

Another springboot program:

URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{
                    file.toURI().toURL()
            }, SpringBootApplication.class.getClassLoader());
Class<?> componentClass = urlClassLoader.loadClass(xxx);

BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(componentClass);
beanDefinitionBuilder.setScope(BeanDefinition.SCOPE_SINGLETON);
beanDefinitionBuilder.setAutowireMode(AbstractBeanDefinition.AUTOWIRE_BY_TYPE);
BeanDefinition beanDefinition = beanDefinitionBuilder.getBeanDefinition();
// beanDefinition.setSynthetic(true);
defaultListableBeanFactory.registerBeanDefinition(componentName, beanDefinition);

// Exception occurred while getting Bean
defaultListableBeanFactory.getBean(componentName);

Place of investigation: org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator:515

private Object buildProxy(Class<?> beanClass, @Nullable String beanName,
            @Nullable Object[] specificInterceptors, TargetSource targetSource, boolean classOnly) {
    // ...
    ClassLoader classLoader = getProxyClassLoader();
    if (classLoader instanceof SmartClassLoader smartClassLoader && classLoader != beanClass.getClassLoader()) {
    classLoader = smartClassLoader.getOriginalClassLoader();
    }
    return (classOnly ? proxyFactory.getProxyClass(classLoader) : proxyFactory.getProxy(classLoader));
}

ClassLoader classLoader = getProxyClassLoader(); I obtained the ClassLoader for AppClassLoader instead of beanClass. I would like to ask about its usage here