Spring Boot 学习之环境搭建
2017-03-15 15:21
531 查看
引言:
SpringBoot 、可以快速的搭建 Spring 框架环境,官方推荐使用配置类的方式去配置或自定义配置,所以需要学习的人有一定的Spring框架使用基础,注解使用的基础
搭建:
IDE:IntelliJ IDEA
管理工具:Maven、Git/GitHub 具体使用请参考其他文章
一、pom.xml 文件
二、目录结构
三、启动文件:Application (自定义类名)
四、application.properties 配置文件
五、HelloWorldController
六、Users
七、运行Application.class
八、访问 http://localhost:9000/springboot/test/hello 得到如下结果:
未完待续...
SpringBoot 、可以快速的搭建 Spring 框架环境,官方推荐使用配置类的方式去配置或自定义配置,所以需要学习的人有一定的Spring框架使用基础,注解使用的基础
搭建:
IDE:IntelliJ IDEA
管理工具:Maven、Git/GitHub 具体使用请参考其他文章
一、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>spring</groupId> <artifactId>springboot</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <!-- 默认继承自 Spring Boot 官方的指定版本 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <name>springboot Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- Add typical dependencies for a web application. spring-boot-starter-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Add test dependencies for this wen application. spring-boot-starter-test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <!-- additional json style message converter. --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.28</version> </dependency> </dependencies> <!-- Package as an executable jar --> <build> <finalName>springboot</finalName> <plugins> <plugin> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-maven-plugin --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
二、目录结构
三、启动文件:Application (自定义类名)
package com.springboot.boot; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; /** * This is where the spring boot start. * The references of the annotation '@SpringBootApplication' in Spring Official Docs. * "Many Spring Boot developers always have their main class annotated with @Configuration, @EnableAutoConfiguration and @ComponentScan. * Since these annotations are so frequently used together (especially if you follow the best practices above), Spring Boot provides a convenient @SpringBootApplication alternative. * The @SpringBootApplication annotation is equivalent to using @Configuration, @EnableAutoConfiguration and @ComponentScan with their default attributes * Created by Vincent on 2017/3/13. * @author Vincent * @version 1.0.0 * Description: Spring Boot Starter */ @SpringBootApplication public class Application extends WebMvcConfigurerAdapter{ /** * this is a method of the WebMvcConfigurerAdapter.class * we can override the default value/achievements of spring boot * and customize our own HttpMessageConverters. * @param converters */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { /* using the StringHttpMessageConverter to handle with simple String message. */ StringHttpMessageConverter stringConverter= new StringHttpMessageConverter(); stringConverter.setDefaultCharset(Charset.forName("UTF-8")); converters.add(stringConverter); /* using the FastJsonHttpMessageConverter to handle these below. 1. text/html;charset=UTF-8 a page(htm/html/jsp etc.) 2. application/json;charset=utf-8 json data type response 3. text/plain;charset=UTF-8 a text or string etc. 4. application/x-www-form-urlencoded;charset=utf-8 standard encoding type. convert form data to a key-value. ... */ FastJsonHttpMessageConverter4 fastJsonConverter = new FastJsonHttpMessageConverter4(); FastJsonConfig fastJsonConfig = new FastJsonConfig() c1c6 ; fastJsonConfig.setCharset(Charset.forName("UTF-8")); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); fastJsonConverter.setFastJsonConfig(fastJsonConfig); List<MediaType> supportedMediaTypes = new ArrayList<MediaType>(); MediaType text_plain = new MediaType(MediaType.TEXT_PLAIN, Charset.forName("UTF-8")); MediaType text_html = new MediaType(MediaType.TEXT_HTML, Charset.forName("UTF-8")); MediaType x_www_form_urlencoded_utf8 = new MediaType(MediaType.APPLICATION_FORM_URLENCODED, Charset.forName("UTF-8")); supportedMediaTypes.add(text_html); supportedMediaTypes.add(text_plain); supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); supportedMediaTypes.add(x_www_form_urlencoded_utf8); fastJsonConverter.setSupportedMediaTypes(supportedMediaTypes); converters.add(fastJsonConverter); super.configureMessageConverters(converters); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
四、application.properties 配置文件
server.port=9000 server.servlet-path=/springboot spring.mvc.servlet.load-on-startup=1
五、HelloWorldController
package com.springboot.boot; import com.springboot.model.Users; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * Created by Vincent on 2017/3/13. * Version 1.0.0 * Description a simple controller demo using spring boot annotations. */ @RestController @RequestMapping("/test") public class HelloWorldController { private static final Logger logger = LoggerFactory.getLogger(HelloWorldController.class); @RequestMapping("/hello") public Object hello(){ logger.info("Hello World! Which means you have build the web application with spring boot 'AutoConfiguration' mode successfully."); /* step 1 : test the request, the response value should be "Hello World! Which means you have build the web application with spring boot 'AutoConfiguration' mode successfully" with quotes */ // return "Hello World! Which means you have build the web application with spring boot 'AutoConfiguration' mode successfully. 你好"; /* step 2 test fastJson json serialization/formatter */ Users user = new Users(); user.setUid(1); user.setUname("Vincent Wang 汉字测试"); return user; // response on thte page should be {"uid":1,"uname":"Vincent Wang"} /* step 3 test simple String response 1. make the application.class extends the WebMvcConfigurerAdapter 2. override the method 'configureMessageConverters' to reset the 'List<HttpMessageConverter<?>> converters'. 3. disable step 2, enable step 1, sending a request on the browse or somewhere, see what happened. */ } }
六、Users
package com.springboot.model; import com.alibaba.fastjson.annotation.JSONField; /** * Created by Vincent on 2017/3/14. */ public class Users { public int uid; /** * By adding this annotation '@JSONField(serialize = false)', we can figure out whether the configuation of fastJsonMessageConverter is effective or not. * if it worked, the result we got at the page should not contain the uname field * before add: { "uid":1, "uname":"Vincent Wang" }, after add: { "uid":1 } */ public String uname; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname == null ? "" : uname; } @Override public String toString() { return "Users{" + "uid=" + uid + ", uname='" + uname + '\'' + '}'; } }
七、运行Application.class
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.2.RELEASE) 2017-03-15 15:09:17.356 INFO 3004 --- [ main] com.springboot.boot.Application : Starting Application on Vincent-PC with PID 3004 (started by Vincent in E:\Intellij Workspace\springboot) 2017-03-15 15:09:17.359 INFO 3004 --- [ main] com.springboot.boot.Application : No active profile set, falling back to default profiles: default 2017-03-15 15:09:17.498 INFO 3004 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@24cd504e: startup date [Wed Mar 15 15:09:17 CST 2017]; root of context hierarchy 2017-03-15 15:09:18.667 INFO 3004 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 9000 (http) 2017-03-15 15:09:18.675 INFO 3004 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat 2017-03-15 15:09:18.676 INFO 3004 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.11 2017-03-15 15:09:18.757 INFO 3004 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2017-03-15 15:09:18.757 INFO 3004 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1264 ms 2017-03-15 15:09:18.873 INFO 3004 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/springboot/*] 2017-03-15 15:09:18.877 INFO 3004 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2017-03-15 15:09:18.877 INFO 3004 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2017-03-15 15:09:18.877 INFO 3004 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2017-03-15 15:09:18.877 INFO 3004 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] init server port:9000 2017-03-15 15:09:19.177 INFO 3004 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@24cd504e: startup date [Wed Mar 15 15:09:17 CST 2017]; root of context hierarchy 2017-03-15 15:09:19.227 INFO 3004 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/test/hello]}" onto public java.lang.Object com.springboot.boot.HelloWorldController.hello() 2017-03-15 15:09:19.230 INFO 3004 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2017-03-15 15:09:19.230 INFO 3004 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2017-03-15 15:09:19.257 INFO 3004 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-03-15 15:09:19.257 INFO 3004 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-03-15 15:09:19.292 INFO 3004 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2017-03-15 15:09:19.445 INFO 3004 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2017-03-15 15:09:19.486 INFO 3004 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet' 2017-03-15 15:09:19.486 INFO 3004 --- [ main] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started 2017-03-15 15:09:19.498 INFO 3004 --- [ main] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 12 ms 2017-03-15 15:09:19.498 INFO 3004 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 9000 (http) 2017-03-15 15:09:19.501 INFO 3004 --- [ main] com.springboot.boot.Application : Started Application in 2.504 seconds (JVM running for 2.776)
八、访问 http://localhost:9000/springboot/test/hello 得到如下结果:
未完待续...
相关文章推荐
- spring boot 学习小结1 spring mvc环境搭建
- Spring Boot 学习第一步(搭建初步环境)
- SpringBoot学习笔记 - 环境搭建
- Spring Boot 学习一、搭建初步环境
- Spring Boot 学习第一步(搭建初步环境)
- Spring Boot 学习一、搭建初步环境
- spring boot学习一:intellij环境搭建
- Shiro 学习(一)基于SpringBoot的Apache Shiro环境快速搭建与配置
- SpringBoot学习之路:01.开发环境搭建及概念叙述
- Spring Boot 学习一、搭建初步环境
- [原创]Spring Boot + Mybatis 简易使用指南(一)基础环境搭建
- spring源码学习之路---环境搭建(一)
- Spring学习——(一)基本了解及环境搭建
- Spring学习1:Spring源码阅读环境搭建
- SpringData JPA的学习笔记之环境搭建
- 移植u-boot1.1.6到友善mini2440学习笔记之环境搭建(系列之一)
- ITCAST视频-Spring学习笔记(搭建与测试Spring的开发环境)
- Spring Boot环境搭建
- spring4学习:环境搭建和编写HelloWorld
- spring源码学习之路---环境搭建(一)