当前位置: 首页 > news >正文

springboot简介

​​​​​​

一、概述

spring boot是spring家族的一员。官网介绍,spring boot的设计宗旨是使用户以最小化的spring配置尽快地搭建起基于spring的应用。特点是,1,秒秒内启动spring初始化;2,搭建几乎所有的应用需求,rest应用接口,网络套接,网络应用,流,任务等;3,简化的安全保障;4,高度支持sql和nosql;5,内嵌运行时支持,tomcat,jetty和undertow;5,开发使用的工具,比如自动重启;等等。

spring boot创建的应用可以使用jar启动,也可以打成war放到tomcat部署。

二、入门案例

环境要求。spring boot2.1.1需要java8到java11,spring framework5.1.2及以上,maven3.3以上。

  1. 创建一个maven工程springbootabc,打包方式为jar。
  2. 将官网提供的父工程依赖复制到项目的pom.xml。

  

       <!-- Inherit defaults from Spring Boot -->

         <parent>

                   <groupId>org.springframework.boot</groupId>

                   <artifactId>spring-boot-starter-parent</artifactId>

                   <version>2.1.1.BUILD-SNAPSHOT</version>

         </parent>



         <!-- Add typical dependencies for a web application -->

         <dependencies>

                   <dependency>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-web</artifactId>

                   </dependency>

         </dependencies>



         <!-- Package as an executable jar -->

         <build>

                   <plugins>

                            <plugin>

                                     <groupId>org.springframework.boot</groupId>

                                     <artifactId>spring-boot-maven-plugin</artifactId>

                            </plugin>

                  </plugins>

         </build>



         <!-- Add Spring repositories -->

         <!-- (you don't need this if you are using a .RELEASE version) -->

         <repositories>

                   <repository>

                            <id>spring-snapshots</id>

                            <url>https://repo.spring.io/snapshot</url>

                            <snapshots><enabled>true</enabled></snapshots>

                   </repository>

                   <repository>

                            <id>spring-milestones</id>

                            <url>https://repo.spring.io/milestone</url>

                   </repository>

         </repositories>

         <pluginRepositories>

                   <pluginRepository>

                            <id>spring-snapshots</id>

                            <url>https://repo.spring.io/snapshot</url>

                   </pluginRepository>

                   <pluginRepository>

                            <id>spring-milestones</id>

                            <url>https://repo.spring.io/milestone</url>

                   </pluginRepository>

         </pluginRepositories>

1. 创建一个Application类作为springboot的启动类。

/**

 * springboot启动类

 *

 * @author Administrator

 *

 */

@RestController

@EnableAutoConfiguration

public class Application {



         @RequestMapping("/")

         public String home() {

                   return "欢迎使用springboot";

         }



         public static void main(String[] args) {

                   System.out.println("sprngboot启动中...");

                   SpringApplication.run(Application.class, args);

         }

}

运行main方法测试,控制台会输出一个spring的图案和其他配置信息。访问localhost:8080页面显示欢迎使用springboot。

2. 将项目打成可执行的jar包。

在eclipse中,在项目中执行run as>maven install或者maven build>-X package。将项目打成jar包。

在命令行,执行java –jar xx/xx/ springbootabc-0.0.1-SNAPSHOT.jar。就启动了这个springboot项目。浏览器访问测试。

三、整合spring-data-jpa

jpa,java persistence api,java持久层api,描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。spring-data-jpa是对jpa的封装。

步骤

1. 创建数据库环境

创建一个数据库,创建一个user表。

create table user(

id int not null auto_increment,

username varchar(16),

password varchar(32),

primary key(id)

)charset=utf8;

添加一些测试用的数据。

insert into user values (null,’张三’,’1234’),

 (null,’张四’,’1234’),

(null,’张二式’,’1234’),

(null,’李三’,’1234’),

(null,’李四’,’1234’),

(null,’六三’,’1234’),

(null,’六三四’,’1234’);

1. 创建maven项目

pom文件中,除了需要上述案例中的基本配置外,还需要引入对于spring-boot-starter-data-jp a的依赖。 

                  <dependency>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-data-jpa</artifactId>

                   </dependency>

                   <dependency>

                            <groupId>mysql</groupId>

                            <artifactId>mysql-connector-java</artifactId>

                   </dependency>

这两个库,不需要指定版本号,springboot会自动匹配。

2. 编写数据库连接的配置

配置文件的名字是固定的,必须是application.properties。而且要放在resources的根路径下。

#db configuration

spring.datasource.url=jdbc:mysql://localhost/springboot20181109?serverTimezone=GMT

spring.datasource.username=root

spring.datasource.password=1234

spring.datasource.driver-class-name=com.mysql.jdbc.Driver



#jpa configuration

spring.jpa.database=mysql

spring.jpa.show-sql=true

spring.jpa.generate-ddl=true

spring.jpa.hibernate.ddl-auto=update

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovingNamingStrategy

3. 编写实体类,做映射

/**

 * user实体类

 *

 * @author Administrator

 *

 */

@Entity

@Table(name = "user")

public class User {



         @Id

         @Column(name = "id")

         @GeneratedValue(strategy = GenerationType.IDENTITY)

         private Integer id;

         @Column(name = "username")

         private String username;

         @Column(name = "password")

         private String password;



         public Integer getId() {

                   return id;

         }



         public void setId(Integer id) {

                   this.id = id;

         }



         public String getUsername() {

                   return username;

         }



         public void setUsername(String username) {

                   this.username = username;

         }



         public String getPassword() {

                   return password;

         }



         public void setPassword(String password) {

                   this.password = password;

         }



         @Override

         public String toString() {

                   return "User [id=" + id + ", username=" + username + ", password=" + password + "]";

         }



}

4. 编写service层接口和实现

接口

/**

 * user服务接口

 *

 * @author Administrator

 *

 */

public interface IUserService {



         /**

          * 查询所有用户

          *

          * @return

          */

         public List<User> findAll();

}

实现

/**

 * 用户服务层实现类

 *

 * @author Administrator

 *

 */

@Service(value = "userService")

public class UserServiceImpl implements IUserService {



         @Resource

         private IUserDao userDao;



         @Override

         public List<User> findAll() {

                   // TODO Auto-generated method stub

                   return userDao.findAll();

         }



}

5. 编写持久层

持久层接口继承JpaRepository<实体类, id的java类型>,不需要实现,这个父类已经实现常用的sql操作。

/**

 * 用户dao层接口

 *

 * @author Administrator

 *

 */

@Repository(value = "userDao")

public interface IUserDao extends JpaRepository<User, Integer> {



         /**

          * 查询所有用户

          *

          * @return

          */

         // List<User> findAll();



}

6. 编写控制层

/**

 * 用户控制类

 *

 * @author Administrator

 *

 */

@RestController

@RequestMapping("/user")

public class UserController {



         @Resource

         private IUserService userService;



         @RequestMapping("/findAll")

         public List<User> findAll() {

                   return userService.findAll();

         }

}

7. 编写springboot的引导类

注意,引导类所在的包的路径要包含其他所有文件的路径,这样才可以扫描到其他文件。注解才能生效。

/**

 * springboot引导类

 *

 * @author Administrator

 *

 */

@SpringBootApplication

public class Application {



         public static void main(String[] args) {

                  SpringApplication.run(Application.class, args);

         }

}

8. 编写访问的html文件

由于是可执行的jar包,所有没有webapp或者WEB-INF的目录。springboot的解决方案是在resources目录下创建static目录,只能使用static这个名字。

将静态页面放入static目录下。

使用easyui,复制easyui的支持文件到这个目录下,然后,编写user.html和user.js。

user.html

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>测试springboot</title>

<link rel="stylesheet" type="text/css"

         href="easyui/themes/default/easyui.css">

<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">

<script type="text/javascript" src="easyui/jquery-1.7.2.min.js"></script>

<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>

<script src="user.js"></script>

</head>

<body>

         <div>

                   <table id="dataTable"></table>

         </div>

</body>

</html>

user.js

$(function(){

         init.data();

});

var init = {

         data : function(){

                   var columns = [ [ {

                                 field : 'id',

                                 title : '编号',

                                 width : 50,

                     }, {

                                 field : 'username',

                                 title : '用户名',

                                 width : 150,

                     }, {

                                 field : 'password',

                                 title : '密码',

                                 width : 150,

                              } ] ];

                   $("#dataTable").datagrid({

                            title:'用户表',

                            url: "user/findAll",

                            iconCls:'icon-save',

                            nowrap: false,

                            striped: true,

                            collapsible:true,

                            columns: columns,

                   });

         },

}

9. 启动springboot,在浏览器测试

四、整合mybatis

步骤

1. 创建maven项目springbootmybatis

2. 引入对于mybatis的依赖

                   <dependency>

                            <groupId>org.mybatis.spring.boot</groupId>

                            <artifactId>mybatis-spring-boot-starter</artifactId>

                            <version>1.3.2</version>

                   </dependency>

3. 实体类和数据库配置文件使用jpa项目中的。

4. 编写mapper接口

/**

 * 用户mapper接口

 *

 * @author Administrator

 *

 */

@Mapper

public interface IUserMapper {



         @Select("select * from user where username like '%${value}%'")

         public List<User> findUserByUsername(String username);

}

5. 编写service层

6. 编写controller层

使用restful风格

/**

 * 用户控制类

 *

 * @author Administrator

 *

 */

@RestController

@RequestMapping("/user")

public class UserController {



         @Resource

         private IUserService userService;



         @RequestMapping("/findAll/{username}")

         public List<User> findAll(@PathVariable(value = "username") String username) {

                   return userService.findUserByUsername(username);

         }

}

7. 编写启动类

同jpa案例

8. 编写ui

将datagrid的url,设置为url: "user/findAll/张",

9. 启动,测试

五、整合redis

使用上面的两个数据库项目中的任一个

引入redis的依赖

                   <dependency>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-redis</artifactId>

                            <version>1.3.8.RELEASE</version>

                   </dependency>

需要修改两个地方

一个,在启动类中,开始springboot对于缓存的支持。

/**

 * springboot引导类

 *

 * @author Administrator

 *

 */

@SpringBootApplication

@EnableCaching // 开启对缓存的支持

public class Application {



         public static void main(String[] args) {

                   SpringApplication.run(Application.class, args);

         }

}

在service层使用redis缓存,一般是在service层编写缓存业务。

/**

 * 用户服务层实现类

 *

 * @author Administrator

 *

 */

@Service(value = "userService")

public class UserServiceImpl implements IUserService {



         @Resource

         private IUserDao userDao;



         @Override

         @Cacheable(value = "findAllCache", key = "'user.findAll'")

         // 其中,value表示redis数据库中缓存的数据的key

         // key表示指定的方法返回的值的key,是spring的属性,不写会使用默认值

         public List<User> findAll() {

                   // TODO Auto-generated method stub

                   System.out.println("查询mysql数据库");

                   return userDao.findAll();

         }



}

启动,测试

六、整合junit

引入依赖

                   <dependency>

                            <groupId>org.springframework.boot</groupId>

                            <artifactId>spring-boot-starter-test</artifactId>

                   </dependency>

编写测试类

/**

 * 测试junit

 *

 * @author Administrator

 *

 */

@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = Application.class)

public class SpringBootJunitTest {



         @Autowired

         private IUserService userService;



         @Test

         public void test() {

                   List<User> list = userService.findAll();

                   System.out.println(list);

         }

}

测试

七、获取配置文件值

在上面的测试类中,测试

/**

 * 测试junit

 *

 * @author Administrator

 *

 */

@RunWith(SpringJUnit4ClassRunner.class)

@SpringBootTest(classes = Application.class)

public class SpringBootJunitTest {



         @Resource

         private Environment environment;



         @Test

         public void testGetConfiguration() {

                   System.out.println(environment.getProperty("spring.datasource.url"));

         }

}

 

 

 

相关文章:

  • jpa
  • LintCode(22)将一个嵌套集合按照原顺序处理为Integer集合
  • [one_demo_16]直接插入排序的demo
  • [one_demo_17]使用传统方式实现线程间通信的例子
  • ThreadLocal
  • [one_demo_18]js定时器的示例
  • Java8部分新特性
  • jvm简介
  • mybatis使用foreach处理List中的Map
  • log4j2的配置文件
  • 一个用java的NIO实现的socket的客户端和服务端的demo
  • 使用java的nio的pipe实现两个线程间传送数据的demo
  • org.hibernate.TransactionException: nested transactions not supported异常
  • elasticsearch
  • rancher简介
  • [nginx文档翻译系列] 控制nginx
  • centos安装java运行环境jdk+tomcat
  • exif信息对照
  • Javascript设计模式学习之Observer(观察者)模式
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Making An Indicator With Pure CSS
  • mysql innodb 索引使用指南
  • vue-cli3搭建项目
  • vue总结
  • 阿里研究院入选中国企业智库系统影响力榜
  • 安卓应用性能调试和优化经验分享
  • 当SetTimeout遇到了字符串
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 复习Javascript专题(四):js中的深浅拷贝
  • 记一次删除Git记录中的大文件的过程
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 为什么要用IPython/Jupyter?
  • 无服务器化是企业 IT 架构的未来吗?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #pragma data_seg 共享数据区(转)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (JS基础)String 类型
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (Ruby)Ubuntu12.04安装Rails环境
  • (阿里云万网)-域名注册购买实名流程
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • *上位机的定义
  • .equals()到底是什么意思?
  • .NET : 在VS2008中计算代码度量值
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net mvc部分视图
  • .NET Project Open Day(2011.11.13)
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)