前言:相信做java后台编程的童鞋都知道Spring家族,Spring作为我们项目中必备的框架。JavaSpringBoot号称javaEE的颠覆者,这引起了本Y的好奇,这才花费了一点时间,学习了下spring-boot,其最大的优点就是摆脱了繁重的xml配置,一切趋于自动化配置。本篇博客就来探究一下spring-boot,其采用的IDE是intelj idea
本篇博文的目录:
一:使用intelj idea搭建springboot环境
1.1:在intelj idea的界面,选择new-Project,然后选择Spring Initializr,选择JDK版本为1.8.60(最好选择这个,防止出现jdk版本过低,导致兼容性错误),点击next
1.2:在新出的界面,输入自己的Group,这里的含义表示自己的包的结构,我习惯于用com.wyq,这个主要看个人习惯,Type默认的情况下Maven,我们将会采用Maven去管理我们的jar包,注意不要选择第二个,这里使用默认的即可
1.3:接下来的页面注意了,因为我们只是做一个简单的web项目,因此只需要选择Web就ok
1.4:接下来就到了项目的名字处,直接写项目的名字,这里直接起一个就好了,第一个项目,我们起名为Spring-boot-Hello,然后点击Finish
1.5:完成之后,在Idea中会出现一个项目,并且jar包已经被maven下载好了,我们可以直接开始写了
二:第一个案例:Hello springBoot
2.1:DemoApplication这个类是自动生成的代码,它代表着springBoot的启动类,而@SpringBootApplication代表着这是一个SpringBoot应用,相当于加了一个标识,这里是最基础的代码,接下来我们来看一个简单的Hello world的实例,感受一下springboot的便捷之处。
package com.wyq;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2.2:在原有的最基础代码上,我们来增加一些代码,熟悉springmvc的同学都知道@RequestMapping这个注解,它映射的是一个请求 ,其中括号里面的内容表示的是具体的请求
package com.wyq;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController //表示一个控制器
public class DemoApplication {
@RequestMapping("hello") //映射hello请求
public String home(){
return "Hello SpringBoot";
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
2.3:开始运spinghttboo项目,springboot是内置Tomcat的。所以不需要进行任何配置,直接运行就好了,类似于一个javaSE项目,然后看到Tomcat started on port 8080 http,这表示它起的是8080端口,在我们的浏览器其输入Http://localhost:8080/hello
然后在控制台上看到输出的内容,如果没有报错的话,就表示成功启动了
2.4:访问Url,我们在浏览器上输入Http://localhost:8080/hello(这里需要注意SpringBoot不同与以往的SSH框架,是不需要写项目名的,格式为:http:ip:port/requesturl),浏览器就会出现Hello SpringBoot,这就完成一个Hello的小Demo
三:使用map作为返回值,我们来做一个测试,使用map作为参数,然后来请求一个url,可以看到这个方法对应的请求是maps
@RequestMapping("maps")
public Map mapAsReturn(){
Map<String, String> map = new HashMap<String, String>();
map.put("first","星期一");
map.put("second","星期二");
map.put("third","星期三");
map.put("fourth","星期四");
map.put("fifth","星期五");
return map;
}
我们来运行一下程序,在浏览中直接输入http://localhost:8080/maps,可以看出它已经转化为标准的json格式,很方便吧,不用引入任何的json包
四:对象作为返回值
我们来新建一个方法,其中新建一个对象Person,然后给其设值,看一下它会返回什么
@RequestMapping("object")
public Person ObjectAsReturn(){
DateFormat df= new SimpleDateFormat("yyyy-mm-dd");
Person person = new Person();
person.setName("Yrion");
person.setAge(24);
try {
person.setBirthday(df.parse("19930301"));
} catch (ParseException e) {
e.printStackTrace();
}
person.setSex("男");
return person;
}
我们来看一下在浏览器在中输入:http://localhost:8080/object,看它的返回结果是以json的形式出现的
备注:这里访问可能会出现错误页面:No converter found for return value of type:class xxxx
解决方法:报错的这个类必须得有setter/getter方法,其次在maven的pom文件里引入以下的jar包:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.23</version>
</dependency>
四:总结
本篇博文只是SpringBoot的入门篇,做了一个简单的Hello SpringBoot的小项目,和以Map和某个对象作为返回值看其返回的 结果,主要目的是感受一下springBoot和我们平时使用的ssh框架的不同,体会它的优点。具体的原理没有作深入探究,这几天我正在研究,以后的博文会继续深入讲解springBoot的运行原理,谢谢。