SpringBoot总结

来源:互联网 发布:mac开机有声音但是黑屏 编辑:程序博客网 时间:2024/05/21 01:51

一、SpringBoot简介
1.概述
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
2.特点
1)创建独立的Spring应用程序
2)嵌入的Tomcat,无需部署war文件
3)简化maven配置
4)自动配置Spring
5)提供生产就绪型功能,如指标、健康检查、外部配置
6)绝对没有代码生成和对xml没有要求配置
二、SpringBoot安装
从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。简便起见,该框架也提供了命令行界面,它可以用来运行和测试Boot应用。框架的发布版本,包括集成的CLI(命令行界面),可以在Spring仓库中手动下载和安装。
对于不是使用CLI构建的工程,Boot提供了许多的“starter”模块,它们定义了一组依赖,这些依赖能够添加到构建系统之中,从而解析框架及其父平台所需的特定类库。例如,spring-boot-starter-actuator依赖会引入一组基本的Spring项目,从而实现应用的快速配置和即时可用。关于这种依赖,值得强调的一点就是当开发Web应用,尤其是RESTful Web服务的时候,如果包含了spring-boot-starter-web依赖,它就会为你提供启动嵌入式Tomcat容器的自动化配置,并且提供对微服务应用有价值的端点信息,如服务器信息、应用指标(metrics)以及环境详情。除此之外,如果引入spring-boot-starter-security模块的话,actuator会自动配置Spring Security,从而为应用提供基本的认证以及其他高级的安全特性。它还会为应用结构引入一个内部的审计框架,这个框架可以用来生成报告或其他的用途,比如开发认证失败的锁定策略。
在pom文件中添加SpringBoot的依赖

<!-- SpringBoot的依赖 -->  <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.5.9.RELEASE</version></parent>

三、SpringBoot集成mybatis、集成Freemarker:
1.在pom中添加依赖

<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/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.et</groupId>  <artifactId>SpringBoot</artifactId>  <version>0.0.1-SNAPSHOT</version> <!-- SpringBoot的依赖 -->  <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.5.9.RELEASE</version></parent><dependencies>    <!-- SpringBoot的每一个框架的集成都是一个starter         spring-boot-starter-web加载内嵌Tomcat    -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <!-- JSP limitations中有例子:        org.apache.tomcat.embed是个内嵌的tomcat,        tomcat-embed-jasper是Tomcat中用来解析jsp文件的      -->    <dependency>        <groupId>org.apache.tomcat.embed</groupId>        <artifactId>tomcat-embed-jasper</artifactId>    </dependency>    <!-- 连接数据库的starter -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-data-jpa</artifactId>    </dependency>    <!-- mysql驱动包 -->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>5.1.44</version>    </dependency>    <!-- 集成mybatis -->    <dependency>      <groupId>org.mybatis.spring.boot</groupId>      <artifactId>mybatis-spring-boot-starter</artifactId>      <version>1.3.1</version>    </dependency>    <!-- FreeMarker的starter -->    <dependency>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-starter-freemarker</artifactId>      </dependency>      <!-- 阿里 druid 数据库连接池 -->      <dependency>        <groupId>com.alibaba</groupId>        <artifactId>druid</artifactId>        <version>1.1.5</version>    </dependency>    <!-- 健康检查 -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-actuator</artifactId>    </dependency>    <!-- 开发工具 -->    <dependency>          <groupId>org.springframework.boot</groupId>          <artifactId>spring-boot-devtools</artifactId>          <optional>true</optional>      </dependency>  </dependencies></project>

2.包结构:
这里写图片描述
3.application.properties文件的配置如下:

spring.datasource.url=jdbc:mysql://localhost/foodspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.filters=stat,configspring.jpa.show-sql=trueserver.port=80server.context-path=/sbspring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.devtools.restart.enabled=truedebug=true  

4.Emp员工表实体类(与数据库中的表相对应):

package cn.et.lesson01;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class Emp {    @Id    @GeneratedValue(strategy=GenerationType.AUTO)    private int id;    @Column    private String ename;    @Column    private double sal;    @Column    private int deptid;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getEname() {        return ename;    }    public void setEname(String ename) {        this.ename = ename;    }    public double getSal() {        return sal;    }    public void setSal(double sal) {        this.sal = sal;    }    public int getDeptid() {        return deptid;    }    public void setDeptid(int deptid) {        this.deptid = deptid;    }}

5.dao层EmpRepository接口:

package cn.et.lesson01.dao;import org.springframework.data.repository.CrudRepository;import cn.et.lesson01.Emp;public interface EmpRepository extends CrudRepository<Emp,Integer>{}

6.Service包下的EmpService 接口:

package cn.et.lesson01.service;import java.util.Map;import cn.et.lesson01.Emp;public interface EmpService {    /**     * 根据empId获取员工信息     * @param empId     * @return     */    public Map getEmp(Integer empId);    /**     * 添加员工     */    public void saveEmp();    /**     * 查询所有员工信息     * @return     */    public Emp queryEmp();    /**     * 根据empId修改员工信息     * @param empId     */    public void updateEmp(Integer empId);    /**     * 根据empId删除员工信息     * @param empId     */    public void deleteEmp(Integer empId);}

7.EmpServiceImpl类的实现:

package cn.et.lesson01.service.impl;import java.util.List;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Service;import cn.et.lesson01.Emp;import cn.et.lesson01.dao.EmpRepository;import cn.et.lesson01.service.EmpService;@Servicepublic class EmpServiceImpl implements EmpService{    @Autowired    JdbcTemplate jdbc;    @Autowired    EmpRepository er;    /**     * 根据id查询员工信息     */    public Map getEmp(Integer empId){        List<Map<String, Object>> empList = jdbc.queryForList("select * from emp where id="+empId);         return empList.get(0);    }    /**     * 添加员工信息     */    public void saveEmp(){        Emp emp = new Emp();        emp.setEname("ss");        emp.setSal(500.55);        emp.setDeptid(4);        er.save(emp);    }    /**     * 查询员工信息     */    public Emp queryEmp(){              Emp emp = er.findOne(7);        return emp;    }    /**     * 修改员工信息     */    public void updateEmp(Integer empId){        Emp emp = new Emp();        emp.setId(empId);        emp.setEname("张三疯");        er.save(emp);    }    /**     * 更新员工信息     */    public void deleteEmp(Integer empId){        er.delete(empId);    }}

8.controller包下的SbController 类的实现:

package cn.et.lesson01.controller;import java.util.HashMap;import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import cn.et.lesson01.Emp;import cn.et.lesson01.service.EmpService;@RestControllerpublic class SbController {    @Autowired    EmpService service;    @RequestMapping("/helloSb")    public Map helloSb(){        Map map = new HashMap();        map.put("id",1);        map.put("name","zs");        map.put("age",20);        return map;    }    /**     * 根据员工id查询员工信息     * @param empId     * @return     */    @RequestMapping("/emp/{empId}")    public Map getEmp(@PathVariable Integer empId){        return service.getEmp(empId);           }    /**     * 添加员工信息     * @return     */    @RequestMapping("/saveEmp")    public String saveEmp(){        service.saveEmp();        return "1";    }    /**     *  查询员工信息     * @return     */    @RequestMapping("/queryEmp")    public Emp queryEmp(){              return service.queryEmp();    }    /**     * 删除员工信息     * @return     */    @RequestMapping("/deleteEmp/{empId}")    public String  deleteEmp(@PathVariable Integer empId){              service.deleteEmp(empId);        return "1";    }    /**     * 修改员工信息     * @return     */    @RequestMapping("/updateEmp/{empId}")    public String updateEmp(@PathVariable Integer empId){               service.updateEmp(empId);                return "1";    }}

9.main方法的实现:

package cn.et.lesson01;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;//@EnableAutoConfiguration//能够自动配置@SpringBootApplicationpublic class Main {    public static void main(String[] args) {        SpringApplication.run(Main.class, args);    }}

10.前端页面
这里写图片描述
tree.html(运用了easyUi):
这里写图片描述

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>tree.html</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    <link rel="stylesheet" type="text/css" href="themes/default/easyui.css">    <link rel="stylesheet" type="text/css" href="themes/icon.css">    <script type="text/javascript" src="jquery.min.js"></script>    <script type="text/javascript" src="jquery.easyui.min.js"></script>    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->    <script type="text/javascript">        //根据员工姓名查询        function queryForm(){            var eName=$("#empId").textbox('getValue');            $("#dg").datagrid(('load'),{                ename:eName            });        }        function updateForm(){            //获取选中的行            var selectedRow=$("#dg").datagrid("getSelected");            var empId=selectedRow.id            $('#ff').form('submit',{                url:'updateEmp/'+empId,                success: function(msg){                    msg = JSON.parse(msg);                    if(msg.code==1){                        $.messager.alert('提示消息','修改成功!');                        queryForm();                        $("#w").window('close');                    }else{                        $.messager.alert('错误消息',msg.message);                    }                }                       });                                 }        function addForm(){            $("#aa").form('submit',{                url:'saveEmp',                method:'POST',                success:function(msg){                    msg = JSON.parse(msg);                    if(msg.code==1){                                            $.messager.alert('提示消息','新增成功!');                        queryForm();                                                                    $("#a").window('close');                        $("#aa").form('clear');                    }else{                        $.messager.alert('错误消息',msg.message);                    }                }            });        }        $(function(){            $("#tt").tree({                onSelect:function(node){                                    //获取id                    var id=node.id;                    //重新加载                    $("#dg").datagrid('load',{                        deptid:id                                       });                }            });            //通过数组定义工具栏                     $("#dg").datagrid({                    toolbar:[{                    iconCls: 'icon-insert',                    text:'新增',                    onClick:function(){                        //打开一个新增的窗口                        $("#a").window('open');                    }                },{                    iconCls: 'icon-update',                    text:'修改',                    onClick:function(){                         //获取选中的行                        var selectedRow=$("#dg").datagrid("getSelected");                        if(selectedRow==null){                            $.messager.alert('提示消息','请选择要修改的行');                            return;                        }                        //打开窗口                        $("#w").window('open');                        $('#ff').form('load',selectedRow);                    }                },{                    iconCls: 'icon-delete',                    text:'删除',                                  onClick:function(){                                                             //获取所有选中的行                        var selectedRow=$("#dg").datagrid("getSelections");                        //判断是否选中行                        if(selectedRow==null || selectedRow==""){                            $.messager.alert('提示消息','请选择要删除的行');                            return;                        }                        //获取菜品编号的字符串形式                        var empId ="";                        for(var i=0;i<selectedRow.length;i++){                            if(empId==""){                                empId=selectedRow[i].id;                            }else{                                empId+=','+selectedRow[i].id;                            }                        }                        //发送AJAX请求从后台删除                        $.ajax({                            url:'deleteEmp/'+empId,                            method:'POST',                            data:'_method=delete',                            dataType:'json',                            success: function(msg){                                if(msg.code==1){                                    $('#dg').datagrid('clearSelections');                                    $.messager.alert('提示消息','删除成功!');                                    //删除成功后再查询一遍                                    queryForm();                                }else{                                    //弹出异常信息                                        $.messager.alert('错误消息',msg.message);                                                                      }                            }                        });                                     }                }]            })              })    </script>  </head>  <body>        <div id="cc" class="easyui-layout" style="width:100%;height:100%;">                  <div data-options="region:'west',title:'部门管理',split:true" style="width:15%;">            <ul id="tt" class="easyui-tree" data-options="url:'queryDept'"></ul>        </div>           <div data-options="region:'center',title:'员工信息'" style="padding:5px;background:#eee;">            员工姓名:<input id="empId" class="easyui-textbox" type="text" name="ename" data-options="required:false"></input>            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="queryForm()">查询</a>            <div style="height:10px"></div>            <table id="dg" class="easyui-datagrid" style="width:650px;height:350px"             data-options="singleSelect:false,url:'queryEmp',method:'get',collapsible:true,pagination:true">                <thead>                    <tr>                        <!-- {"foodid":1,"foodname":"包","price":2,"img":"t01d5cd25d62b51a194.jpg"} -->                        <th data-options="field:'id',width:80">员工编号</th>                        <th data-options="field:'ename',width:100">员工姓名</th>                        <th data-options="field:'sal',width:80,align:'right'">薪水</th>                               <th data-options="field:'deptid',width:80,align:'right'">部门编号</th>                                                  </tr>                </thead>            </table>        </div>       </div>      <div id="a" class="easyui-window" title="添加员工" data-options="iconCls:'icon-update',closed:true" style="width:330px;height:400px;padding:5px;">        <div class="easyui-layout" data-options="fit:true">            <form id="aa" method="post">                <table cellpadding="5">                    <tr>                        <td>员工姓名:</td>                        <td><input class="easyui-textbox" type="text" name="ename" data-options="required:true"></input></td>                    </tr>                    <tr>                        <td>薪水:</td>                        <td><input class="easyui-textbox" type="text" name="sal" data-options="required:true"></input></td>                    </tr>                      <tr>                        <td>部门编号:</td>                        <td><input class="easyui-textbox" name="deptid" data-options="prompt:'请输入部门编号...',editable:true"></input></td>                    </tr>                  </table>            </form>             <div style="text-align:center;padding:5px">                <a href="javascript:void(0)" class="easyui-linkbutton" onclick="addForm()">保存</a>&nbsp                <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a>            </div>              </div>    </div>    <div id="w" class="easyui-window" title="修改员工信息" data-options="iconCls:'icon-update',closed:true" style="width:330px;height:200px;padding:5px;">        <div class="easyui-layout" data-options="fit:true">            <form id="ff" method="post">            <input type="hidden" name="_method" value="put"/>                <table cellpadding="5">                    <tr>                        <td>员工姓名:</td>                        <td><input class="easyui-textbox" type="text" name="ename" data-options="required:true"></input></td>                    </tr>                    <tr>                        <td>薪水:</td>                        <td><input class="easyui-textbox" type="text" name="sal" data-options="required:true"></input></td>                    </tr>                           <tr>                        <td>部门编号:</td>                        <td><input class="easyui-textbox" type="text" name="deptid" data-options="required:true"></input></td>                    </tr>                   </table>            </form>             <div style="text-align:center;padding:5px">                <a href="javascript:void(0)" class="easyui-linkbutton" onclick="updateForm()">保存</a>&nbsp                <a href="javascript:void(0)" class="easyui-linkbutton" onclick="clearForm()">重置</a>            </div>              </div>    </div>  </body></html>

注意:
jsp文件需要添加解析jsp文件的依赖:

    <!-- JSP limitations中有例子:        org.apache.tomcat.embed是个内嵌的tomcat,        tomcat-embed-jasper是Tomcat中用来解析jsp文件的      -->    <dependency>        <groupId>org.apache.tomcat.embed</groupId>        <artifactId>tomcat-embed-jasper</artifactId>    </dependency>

ftl文件要放在指定的templates文件夹下:

这里写图片描述

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 海南乐东县属于哪个市 海南九所乐东新区租房 乐东尖峰岭住宿 乐丰t6 乐丰t6十v多少钱 doov手机 邦华手机 1+3手机 1500元买什么手机好 誉品手机是杂牌机吗 世界手机销量排行榜 惠族手机 蓝莓手机 荣耀畅玩5 华强北手机报价 千元以内手机排行榜 波导手机 1+手机 viv0y33手机多少钱 nuoio 天翼手机能用移动卡吗 6g内存手机 乐丰手机是杂牌机吗 米蓝 360手机商城 r9s手机报价 gionee是什么手机 6寸手机是多少厘米 北斗手机网 什么手机内存大 两千左右的手机排行榜 lenovo手机多少钱 三卡手机 天翼卡能用什么手机 红米5多少钱 荣耀报价 诺基亚什么时候出新手机 6英寸手机 手机柜台摆设图片 手机配件大全 奥洛斯手机价格