使用Spring Boot来加速Java web项目的开发
我想,现在企业级的 Java web 项目应该或多或少都会使用到 Spring 框架的。
回首我们以前使用 Spring 框架的时候,我们需要首先在(如果你使用 Maven 的话)pom 文件中增加对相关的的依赖(使用 gradle 来构建的话基本也一样)然后新建 Spring 相关的 xml 文件,而且往往那些 xml 文件还不会少。然后继续使用 tomcat 或者 jetty 作为容器来运行这个工程。基本上每次创建一个新的项目都是这么一个流程,而我们有时候仅仅想快速的创建一个 Spring web 工程来测试一些东西,或者是希望能节省时间。
现在我们使用 Spring Boot 就可以快速的做到这些了。
我们先来看一个非常简单的使用 Spring boot 的例子吧:
1. 我们创建一个 Maven 工程,假定工程名字为 spring-boot,然后我们在 pom.xml 文件中加入依赖:
1 2 3 4 5 | <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version> 1.0 . 2 .RELEASE</version> </dependency> |
2. 新建一个 Controller 来接受处理我们的请求:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; /** * Created by wenchao.ren on 2014/4/26. */ @Controller @EnableAutoConfiguration public class SimpleController { @RequestMapping (value = "/hello" , method = RequestMethod.GET) @ResponseBody public String hello(){ return "hello world" ; } public static void main(String[] args) { SpringApplication.run(SimpleController. class , args); } } |
相信大家已经看到了这个 Controller 有一个 main 方法,不要急,我们直接运行这个 main 方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | ' _| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1. 0.2 .RELEASE) 2014 - 04 - 26 22 : 54 : 40.985 INFO 7236 --- [ main] c.r.spring.boot.SimpleController : Starting SimpleController on rollen with PID 7236 (D:\workspace\GitHub\SpringDemo\spring-boot\target\classes started by wenchao.ren in D:\workspace\GitHub\SpringDemo\spring-boot) 2014 - 04 - 26 22 : 54 : 41.008 INFO 7236 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext @50de0926 : startup date [Sat Apr 26 22 : 54 : 41 CST 2014 ]; root of context hierarchy 2014 - 04 - 26 22 : 54 : 41.583 INFO 7236 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Server initialized with port: 8080 2014 - 04 - 26 22 : 54 : 41.706 INFO 7236 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat 2014 - 04 - 26 22 : 54 : 41.706 INFO 7236 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/ 7.0 . 52 2014 - 04 - 26 22 : 54 : 41.785 INFO 7236 --- [ost-startStop- 1 ] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2014 - 04 - 26 22 : 54 : 41.785 INFO 7236 --- [ost-startStop- 1 ] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 779 ms 2014 - 04 - 26 22 : 54 : 42.055 INFO 7236 --- [ost-startStop- 1 ] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2014 - 04 - 26 22 : 54 : 42.057 INFO 7236 --- [ost-startStop- 1 ] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [ /*] 2014-04-26 22:54:42.289 INFO 7236 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/ favicon.ico] onto handler of type [ class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2014 - 04 - 26 22 : 54 : 42.368 INFO 7236 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.rollenholt.spring.boot.SimpleController.hello() 2014 - 04 - 26 22 : 54 : 42.376 INFO 7236 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [ class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2014 - 04 - 26 22 : 54 : 42.377 INFO 7236 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [ class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2014 - 04 - 26 22 : 54 : 42.447 INFO 7236 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2014 - 04 - 26 22 : 54 : 42.459 INFO 7236 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 /http 2014 - 04 - 26 22 : 54 : 42.460 INFO 7236 --- [ main] c.r.spring.boot.SimpleController : Started SimpleController in 1.675 seconds (JVM running for 1.944 ) 2014 - 04 - 26 22 : 54 : 54.963 INFO 7236 --- [nio- 8080 -exec- 1 ] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet' 2014 - 04 - 26 22 : 54 : 54.963 INFO 7236 --- [nio- 8080 -exec- 1 ] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet' : initialization started 2014 - 04 - 26 22 : 54 : 54.971 INFO 7236 --- [nio- 8080 -exec- 1 ] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet' : initialization completed in 8 ms |
会产生上面的输出,查看日志可以发现默认使用的是 tomcat,端口绑定在 8080,现在让我们来访问:http://localhost:8080/hello
就可以看到我们代码中输出的字样:hello world 了。
回首这个过程,是不是相比于以前快速了许多呢
参考资料: