概念
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
spring boot对spring mvc、tomcat等都做了集成,只需要依赖spring boot的jar,通过注解指定主类,然后执行里面的main方法,它就能启动tomcat提供服务。不需要spring mvc的繁琐配置。
使用spring boot时不需要引入spring mvc,tomcat等的依赖,只需要引入spring boot的依赖即可,它会自动寻找spring mvc,tomcat等的合适的版本引入,解决了框架中各种组件版本不一致的问题。
1.开发第一个Spring Boot应用程序
让我们用Java开发一个简单的“Hello World!”Web应用程序,它突出了一些Spring Boot的主要功能。我们将使用Maven来构建这个项目,因为大多数IDE都支持它
在开始之前,打开终端以检查您是否安装了有效的Java和Maven版本。
$ java -version
java版“1.7.0_51”
Java(TM)SE运行时环境(版本1.7.0_51-b13)
Java HotSpot(TM)64位服务器VM(内置24.51-b03,混合模式)
$ mvn -v
Apache Maven 3.2.3(33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home:/Users/user/tools/apache-maven-3.1.1
Java版本:1.7.0_51,供应商:Oracle Corporation
有效版本要在jdk1.7版本以上,maven版本要在3.2.3以上,如我的版本:
1.1创建POM
我们需要从创建Maven pom.xml文件开始。这pom.xml是用于构建项目的配方。打开您喜欢的文本编辑器并添加以下内容:
<!-- 继承默认值为Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.17.RELEASE</version>
</parent>
1.2添加类路径依赖项
于我正在开发一个Web应用程序,我们将添加一个spring-boot-starter-web依赖项
<dependencies>
<dependency>
<groupId> org.springframework.boot </ groupId>
<artifactId> spring-boot-starter-web </ artifactId>
</ dependency>
</ dependencies>
1.3编写代码
要完成我们的应用程序,我们需要创建一个Java文件
package com.ps;
import java.util.HashMap;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
//@ResponseBody 表示返回json字符串
@SpringBootApplication
public class Mvc {
@GetMapping("/")
String home() {
return "Hello 张三!";
}
@GetMapping("/hello")
HashMap<String, String> hello() {
HashMap<String,String> map = new HashMap<String, String>();
map.put("name", "张三");
return map;
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Mvc.class, args);
}
}
1.3.1 注解
@RestController:集合了@ResponseBody和@Controller两个注解,能同时做到返回一个json对象和扫描该类所在的包下所有带注解的类的效果
@RequestMapping 和他的衍生品 @GetMapping,@PostMapping,@PutMapping,@DeleteMapping,@PutMapping
这个注解的作用是当前台界面调用Controller处理数据时候告诉控制器怎么操作。get 对应查询,put 对应更新,post 对应增加,delete 对应删除。
@SpringBootApplication:主要重要是无须在写xml配置文件
1.3.2 运行
直接运行jvm,然后浏览器访问地址
注意:默认端口是8080
2.spring boot集成redis
首先,在pom.xml文件里面加上依赖
<!-- 集成redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
测试:
package com.ps;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Redis {
@Autowired
StringRedisTemplate str;
@GetMapping("/set")
public void setStr() {
str.boundValueOps("name").set("张三");
redisTemplate.boundListOps("list").leftPushAll("张三","李四","王五");
str.boundListOps("list").leftPushAll("张三","李四","王五");
}
@GetMapping("/get")
public String getStr(String key) {
List<String> range2 = str.boundListOps("list").range(0, 10);
System.out.println(range2.toString());
return str.boundValueOps("name").get();
}
}
同时还要写一个资源文件:application.properties
名字固定
#确定服务器的端口
server.port=8085
#确定redis的数据库
spring.redis.database=0
#确定redis连接的ip
spring.redis.host=192.168.0.243
#确定redis的端口
spring.redis.port=6379
#确定redis的密码
spring.redis.password=ps123456
效果图:
注意:要先启动redis的服务
3.spring boot集成mysql和Druid
加入依赖:
<!-- 集成mysql -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 使用druid连接池依赖将默认的c3p0连接池覆盖掉 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
测试:
package com.ps;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.ColumnMapRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.druid.pool.DruidDataSource;
@RestController
public class Mysql {
// spring boot默认使用的是c3p0连接池,但是效率没有druid连接池好,所以在这里我使用了druid连接池
@Autowired // 这里是druid连接池
private JdbcTemplate jdbcTemplate;
@GetMapping("/getEmp")
public List<Map<String, Object>> getMysql() {
List<Map<String, Object>> query = jdbcTemplate.query("select sal from emp", new ColumnMapRowMapper());
return query;
}
}
在application.properties
资源文件里加:
spring.datasource.url=jdbc:mysql://localhost:3306/m1dn
spring.datasource.username=root
spring.datasource.password=ps123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=123456
spring.datasource.druid.filter.stat.slow-sql-millis=1
效果图:
访问:
http://127.0.0.1:8080/druid/index.html
这是Druid的功能
用户和密码就是在上面application.properties
资源文件里的设置的druid和123456
小知识:spring boot中带有@Configuration注解的类,可以看成是spring boot的配置文件的类