手动加载应用程序上下文以在spring启动应用程序中编写getBean()

时间:2015-02-19 19:33:18

标签: spring

在spring应用程序中,我们这样编写以通过手动加载spring应用程序上下文来获取bean。

ApplicationContext context = new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
JobLauncher launcher=(JobLauncher)context.getBean("launcher");

如何在春季靴子中做类似的事情? 成为新手......需要帮助

1 个答案:

答案 0 :(得分:15)

@SpringBootApplication
public class Application {
    public static void main(String[] args) throws Exception {
        ApplicationContext app = SpringApplication.run(Application .class, args);//init the context
        SomeClass myBean = app.getBean(SomeClass.class);//get the bean by type
    }
    @Bean // this method is the equivalent of the <bean/> tag in xml
    public SomeClass getBean(){
         return new SomeClass();
    }

    @Bean 
    public MyUtilClass myUtil(SomeClass sc){
         MyUtilClass uc = new MyUtilClass();
         uc.setSomeClassProp(sc);
         return uc;
    }
}

您也可以使用xml文件来声明bean而不是java配置,只需使用@ImportResource({"classpath*:applicationContext.xml"})

编辑:回答评论:将util类设为spring bean(使用@Component注释和组件扫描或与上面显示的SomeClass相同)然后你可以@Autowire你喜欢的bean。然后,当您想要使用Util类时,只需从上下文中获取它。