必須有這兩個應用程序,實際上這樣做(如果我是正確的)從IOC容器接收對象 - 春
@SpringBootApplication
public class DemoApplication {
@Autowired
HelloWorld helloWorld;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Bean
public CommandLineRunner run() {
helloWorld.setMessage("wow");
return (load) -> {
helloWorld.getMessage();
};
}
}
和
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new
ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
obj.getMessage();
}
}
都使用
@Component
public class HelloWorld {
private String message;
public void setMessage(String message) {
this.message = message;
}
public void getMessage() {
System.out.println("Your Message : " + message);
}
}
helloWord obj唯一的區別是,如果我在我的程序中使用MainApp類,那麼helloWorld類不需要@Component註釋。
我的問題:
如果我是正確的SpringBoot註解使得不需要定義一個ClassPathXmlApplicationContext的。 @Autowire爲我做到了這一點。
我現在感興趣的是,如果我的AutoWire允許在開始時說100個對象,所有這些對象現在在IoC容器中是正確的嗎?
如果是這樣的話:不可能在另一個類的CTOR中分發該容器,並且可以訪問所有保存的對象,如: (HelloWorld)context.getBean(「helloWorld」);或 (someRandomClass)context.getBean( 「someRandomClass」)
public CTOR(IOCContainer container) {
this.container = container;
}
而不是執行
public CTOR(HelloWorld helloWorld, SomeRandomClass someRandomClass) {
this.helloWorld = helloWorld;
this.someRandomClass = someRandomClass;
}
如果這是可能的,我該怎麼辦呢? (還有後面的我的問題沒有用例/任務,我感到如果這是可能只是有興趣)
感謝您的回答。我該如何注入ApplicationContext?由於我沒有在DemoApplication類中創建ApplicationContext,因此我不知道如何將IoC Cointainer分發到另一個類中。 – PowerFlower
不客氣。 Spring負責設置ApplicationContext。它可以通過使用'@Autowired private ApplicationContext applicationContext''輕鬆注入 – Peter