class ExcludeBeanNameAutoProxyCreator extends BeanNameAutoProxyCreator {

    @Nullable
    private List<String> excludeBeanNames;

    /**
     * Set the names of the beans that should not automatically get wrapped with proxies.
     * A name can specify a prefix to match by ending with "*", e.g. "myBean,tx*"
     * will match the bean named "myBean" and all beans whose name start with "tx".
     * <p><b>NOTE:</b> In case of a FactoryBean, only the objects created by the
     * FactoryBean will get proxied. This default behavior applies as of Spring 2.0.
     * If you intend to proxy a FactoryBean instance itself (a rare use case, but
     * Spring 1.2's default behavior), specify the bean name of the FactoryBean
     * including the factory-bean prefix "&amp;": e.g. "&amp;myFactoryBean".
     * @see org.springframework.beans.factory.FactoryBean
     * @see org.springframework.beans.factory.BeanFactory#FACTORY_BEAN_PREFIX
     */
    public void setExcludeBeanNames(String... beanNames) {<FILL_FUNCTION_BODY>}

    @Override
    protected boolean isMatch(String beanName, String mappedName) {
        return super.isMatch(beanName, mappedName) && !isExcluded(beanName);
    }

    private boolean isExcluded(String beanName) {
        if (excludeBeanNames != null) {
            for (String mappedName : this.excludeBeanNames) {
                if (PatternMatchUtils.simpleMatch(mappedName, beanName)) {
                    return true;
                }
            }
        }
        return false;
    }
}

        Assert.notEmpty(beanNames, "'excludeBeanNames' must not be empty");
        this.excludeBeanNames = new ArrayList<>(beanNames.length);
        for (String mappedName : beanNames) {
            this.excludeBeanNames.add(mappedName.strip());
        }
    
<methods>public void <init>() ,public transient void setBeanNames(java.lang.String[]) <variables>private static final java.lang.String[] NO_ALIASES,private List<java.lang.String> beanNames