springboot-只能用于web服务开发?不创建web服务也能使用spring bean

2021/12/19

spring除了开发web服务外,在其他的需求中也是可以使用的,比如我们只想实现一个简单的爬虫,爬到数据之后写入数据库,我们一定要创建一个web服务来通过接口触发各个方法的调用吗,可能有很多小伙伴使用spring都是在公司的web项目中使用,如果脱离web环境都不会写代码了,今天我们就看一下,使用springboot怎么不启动web服务也能运行spring代码。

有了这个功能,我们在开发一些小的需求的时候非常方便,不用再去羡慕python等语言。

假设我们现在写好了希望运行的Sevice,以及相应内部实现,假设是HelloService.hello()方法

我们如何启动一个main方法去运行它呢

使用也非常简单,我们只需要对springboot生成的代码做略微的修改即可。 使用SpringApplicationBuilder来创建SpringApplication,并且配置WebApplicationType为NONE,这样即使有tomcat依赖也不会创建http server, 执行run方法之后我们就得到了spring里的ApplicationContext,通过ApplicationContext.getBean能够拿到我们的任意一个bean,得到bean之后再调用我们想调用的方法,而不需要启动http server再用http接口去触发调用。

@SpringBootApplication
public class DemoApplication {
	public static void main(String[] args) {
		ConfigurableApplicationContext applicationContext = new SpringApplicationBuilder(DemoApplication.class).web(WebApplicationType.NONE).run(args);
		applicationContext.getBean(HelloService.class).hello();
	}
}

有了这个方法,我们要实现一些小的数据处理等任务就能游刃有余了,springboot不再只局限于web场景。

Post Directory