2017-02-28 8 views
0

Es gab mehrere Argumente darum, ApplicationContext.getBean() nicht zu verwenden, um eine Bean-Referenz zu erhalten, von denen die meisten auf Logik basieren, die gegen die Prinzipien der Inversion der Kontrolle verstößt.Wie vermeidet man die Verwendung von context.getbean im Frühjahr

Gibt es eine Möglichkeit, einen Verweis auf prototypische Scoped Bean zu erhalten, ohne context.getBean() aufzurufen?

+0

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-factory -scopes-sing-prot-Interaktion –

Antwort

0

Dies ist die häufigste Methode Prototyp Bean zu erstellen:

abstract class MyService { 
    void doSome() { 
     OtherService otherService = getOtherService(); 
    } 
    abstract OtherService getOtherService(); 
} 

@Configuration 
class Config {  
    @Bean 
    public MyService myService() { 
     return new MyService() { 
      OtherService getOtherService() { 
       return otherService(); 
      } 
     } 
    } 
    @Bean 
    @Scope("prototype") 
    public OtherService otherService() { 
     return new OtherService(); 
    } 
} 
0

Betrachten Spring Boot zu verwenden !

als du so etwas tun kann ...

Runner:

@SpringBootApplication 
public class Runner{ 
    public static void main(String[] args) { 
     SpringApplication.run(Runner.class, args); 
    } 
} 

Einige Controller:

@Controller 
public class MyController { 

    // Spring Boot injecting beans through @Autowired annotation 
    @Autowired 
    @Qualifier("CoolFeature") // Use Qualifier annotation to mark a class, if for example 
            // you have more than one concreate class with differant implementations of some interface. 
    private CoolFeature myFeature; 

    public void testFeature(){ 
      myFeature.doStuff(); 
    } 
} 

Einige cooles Feature:

@Component("CoolFeature") // To identify with Qualifier 
public class CoolFeature{ 

    @Autowired 
    private SomeOtherBean utilityBean; 

    public void doStuff(){ 
     // use utilityBean in some way 
    } 
} 

Keine XML-Dateien zu behandeln. Wir können bei Bedarf weiterhin auf den Kontext für manuelle Konfigurationen zugreifen.

nachlesen:

Spring Boot Reference

Pro Spring Boot

Verwandte Themen