2016-05-09 11 views
7

tworzę dynamiczny fasoli używając "AutowireCapableBeanFactory" następującoJak włączyć pamięć podręczną dla metody wewnątrz dynamicznego fasoli

RegisterFoo.java

@Configuration 
public class registerFoo { 
    @Autowired 
    ApplicationContext appcontext; 

    AutowireCapableBeanFactory bf; 

    @PostConstruct 
    public void registerFoo() { 
     bf = appContext.getAutowireCapableBeanFactory(); 
     RootBeanDefinition def = new RootBeanDefinition(Foo.class); 
     ((DefaultListableBeanFactory)bf).registerBean("foo", def); 
    } 
} 

RegisterBar.java

@Configuration 
public class registerBar { 
    @Autowired 
    ApplicationContext appcontext; 

    AutowireCapableBeanFactory bf; 

    @PostConstruct 
    public void registerFoo() { 
     bf = appContext.getAutowireCapableBeanFactory(); 
     RootBeanDefinition def = new RootBeanDefinition(Bar.class); 
     Foo foo = (Foo) appContext.getBean("foo"); 
     ConstructorArgumentValues cav = new ConstructorArgumentValues(); 
     cav.add(0, foo.getValue()); 
     def.setArgumentValues(cav); 
     ((DefaultListableBeanFactory)bf).registerBean("bar", def); 
    } 
} 

Foo.class

public class Foo { 
    @Cacheable 
    public String getValue() { 
     // return value 
    } 
} 

Metoda getValue() wykonuje swoje ciało za każdym razem. Spring nie buforuje wartości zgodnie z oczekiwaniami. Jakieś sugestie?

+0

Wszelkie wejścia tutaj naprawdę docenione. – sag

+0

Czy masz inne miejsca w aplikacji, w których działa pamięć podręczna? Z wyjątkiem dynamicznego fasoli? – Patrick

+0

@Patrick - Tak, działa w przypadku zwykłych ziaren. to jest fasola utworzona za pomocą adnotacji "@ Bean''". – sag

Odpowiedz

1

Myślę, że problemem jest to, że gdy sprężyna zarejestrować Bean z adnotacją, to wtedy po przetwarzane przez procesor po fasoli, która będzie zarządzać @Cacheable

Podczas rejestracji ręcznie, post-processing nie może zrobić.

Nie mogę tego zweryfikować na razie, ale właśnie tam przyjrzę się pierwszy.

Mam nadzieję, że ta pomoc.

Powiązane problemy