前段时间在spring的官网上看到了spring boot这个工程,感觉挺好的,能够最大化的减少基于Spring web应用的开发,可以将项目打成独立的jar,然后再使用,从文档上看,目前支持Maven和Groovy 。于是就跟着文档写了下代码,还是熟悉的HelloWorld,采用maven来构建。
首先是创建个maven工程,对应的pom.xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.jacksoft</groupId> <artifactId>iSpring-test</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>iSpring-test Maven Webapp</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.0.0.RC3</version> </parent> <dependencies> <!-- spring jar start --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- spring jar end --> </dependencies> <build> <finalName>iSpring-test</finalName> </build> <repositories> <repository> <id>spring-snapshots</id> <url>http://repo.spring.io/snapshot</url> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>spring-milestones</id> <url>http://repo.spring.io/milestone</url> <snapshots><enabled>true</enabled></snapshots> </repository> <repository> <id>repository.hibernate</id> <name>jar</name> <url>http://mirrors.ibiblio.org/maven2</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-snapshots</id> <url>http://repo.spring.io/snapshot</url> </pluginRepository> <pluginRepository> <id>spring-milestones</id> <url>http://repo.spring.io/milestone</url> </pluginRepository> </pluginRepositories> </project>
需要将工程的parent设置为spring-boot-starter-parent,同时添加依赖spring-boot-starter-web,这样就基本可以了,接下来就是写个controller来试试:
package com.jacksoft.spring.controller;
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;
@Controller
@EnableAutoConfiguration
public class HelloController {
@RequestMapping(value="hello.do",method=RequestMethod.GET)
@ResponseBody
public String index(){
return "Hello,World!!!";
}
}
很简单,就是返回Hello Wolrd字符,然后再写启动类,通过main方法来启动:
package com.jacksoft.spring.bootstrap;
import org.springframework.boot.SpringApplication;
import com.jacksoft.spring.controller.HelloController;
public class Bootstrap {
public static void main(String[] args) {
Object[] source = new Object[]{HelloController.class};
SpringApplication.run(source, args);
}
}
使用SpringApplication来启动容器,spring已经为我们集成了tomcat容器,当然也可以使用Jetty服务器
运行这个main函数,看控制台的信息:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.0.0.RC3)
2014-02-21 11:24:31.995 INFO 4608 --- [ main] com.jacksoft.spring.bootstrap.Bootstrap : Starting Bootstrap on Jack-PC with PID 4608 (E:\MyWorkSpaces\myspace\two\iSpring-test\target\classes started by Jack)
2014-02-21 11:24:32.046 INFO 4608 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1d332b: startup date [Fri Feb 21 11:24:32 CST 2014]; root of context hierarchy
2014-02-21 11:24:33.185 INFO 4608 --- [ main] .t.TomcatEmbeddedServletContainerFactory : Server initialized with port: 8080
2014-02-21 11:24:33.412 INFO 4608 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
2014-02-21 11:24:33.413 INFO 4608 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.47
2014-02-21 11:24:33.571 INFO 4608 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2014-02-21 11:24:33.572 INFO 4608 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1528 ms
2014-02-21 11:24:34.446 INFO 4608 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2014-02-21 11:24:34.533 INFO 4608 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello.do],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.jacksoft.spring.controller.HelloController.index()
2014-02-21 11:24:34.561 INFO 4608 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2014-02-21 11:24:34.562 INFO 4608 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2014-02-21 11:24:34.724 INFO 4608 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2014-02-21 11:24:34.754 INFO 4608 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port: 8080
2014-02-21 11:24:34.756 INFO 4608 --- [ main] com.jacksoft.spring.bootstrap.Bootstrap : Started Bootstrap in 3.221 seconds (JVM running for 3.634)
可以看到项目部署的一些基本信息,如端口,访问路径,容器啥的,最后就是在浏览器里面访问了
访问地址:http://localhost:8080/hello.do
就可以看到返回的helloworld了。
到此,一个简单的例子就算完成了,
参考文档:http://projects.spring.io/spring-boot/
http://projects.spring.io/spring-boot/docs/README.html