springboot入门

来源:互联网 发布:sql 恢复删除数据 编辑:程序博客网 时间:2024/06/03 21:02

1. 什么是springboot

  1. springboot可以完全不适用xml,而使用约定大于配置的方式来快速的启动项目,可以不通过xml来集成ORM框架,Springdata、Mybatis等。

  2. springboot集成了tomcat,在打包web项目的时候,可以直接打成jar包,而且不需要在环境中安装tomcat,而只需要java环境,就可以用启动jar包的方式来启动web项目。

  3. springboot快速部署和开发的特性,是它可以快速的和spring家族的Springcloud各组件快速的组合。

2. springboot项目初始化

  1. springboot项目可以在线生成:通过网站http://start.spring.io/
    spring-init-web
    可以在网站选择maven或者gradle工程,选择springboot版本。设置Group和Artifact值,还可以设置maven依赖项目,比如web和JPA依赖,当然这些依赖也可以后期项目需要再加入所需的maven依赖。

  2. 填好项目的各种属性可以点击Generate Project生成并下载springboot工程,也可以利用付费版的idea来生成。
    这里写图片描述
    选择Spring Initializr,然后跟网站差不多一步一步选择就能生成项目了。

3. 简单的项目工程搭建

  1. 数据库设计:首先设计一个简单的数据库表
    这里写图片描述

  2. 配置maven pom.xml文件,需要配置 web mysql jpa的相关dependency

<?xml version="1.0" encoding="UTF-8"?><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>com.zjb.learning.springcloud</groupId>    <artifactId>learning-springboot-demo</artifactId>    <version>0.0.1-SNAPSHOT</version>    <packaging>jar</packaging>    <name>learning-springboot-demo</name>    <description>Demo project for Spring Boot</description>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.5.8.RELEASE</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-test</artifactId>            <scope>test</scope>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>        </dependency>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-data-jpa</artifactId>        </dependency>        <dependency>            <groupId>com.google.code.gson</groupId>            <artifactId>gson</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

3.配置工程文件application.yml。springboot可以通过yml文件进行一些属性配置来代替properties文件。设置数据库连接,工程根目录

spring:  datasource:    driver-class-name: com.mysql.jdbc.Driver    username: root    password: 123456    url: jdbc:mysql://localhost:3306/springboot_learning?characterEncoding=utf-8&useSSL=falseserver:  context-path: /userCentre

4.根据数据库表的设计来设计域对象

package com.zjb.learning.springcloud.learningspringbootdemo.domain;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import java.util.Date;/** * @author zjb * @date 2017/10/29. */@Entity@Table(name = "user_info")public class User {    @Id    @GeneratedValue    private Integer id;    private String userId;    private String userName;    private String userAddress;    private Integer deleted;    private Date createTime;    private Date modifyTime;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUserId() {        return userId;    }    public void setUserId(String userId) {        this.userId = userId;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getUserAddress() {        return userAddress;    }    public void setUserAddress(String userAddress) {        this.userAddress = userAddress;    }    public Integer getDeleted() {        return deleted;    }    public void setDeleted(Integer deleted) {        this.deleted = deleted;    }    public Date getCreateTime() {        return createTime;    }    public void setCreateTime(Date createTime) {        this.createTime = createTime;    }    public Date getModifyTime() {        return modifyTime;    }    public void setModifyTime(Date modifyTime) {        this.modifyTime = modifyTime;    }}

@Entity来和数据库关联,这里预定大于配置,域对象命名以驼峰的方式,而数据库用_的方式,域对象的属性和数据库字段名一一对应。同样,域对象名和数据库名一一对应,当预定不能对应时可以通过@Table来进行设置。

5.repository类设置:本例中通过spring-data-jpa来完成对数据库的操作,有图jap操作是继承JpaRepository来实现的,因此本例子中的repository其实就是SSM开发中的dao层。

public interface UserRepository extends JpaRepository<User, Integer> {}

申明接口UserRepository继承JpaRepository接口,接口的泛型为Entity类型已经Entity的主键类型,Jpa也是基于约定大于配置的方式,比如查询一个实体对象可以通过申明findOne(Integer id)这种方式来操作数据库,jpa会自动生成sql。而JpaRepository接口中已经声明了findOne这个方法,因此对于Jpa这种操作数据库的方式,一些简单的操作并不需要声明函数

6.service层:service层主要是接口和实现类两个service

public interface UserService {    User findOneById(Integer id);}
package com.zjb.learning.springcloud.learningspringbootdemo.service.impl;import com.zjb.learning.springcloud.learningspringbootdemo.domain.User;import com.zjb.learning.springcloud.learningspringbootdemo.repository.UserRepository;import com.zjb.learning.springcloud.learningspringbootdemo.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;/** * @author zjb * @date 2017/10/29. */@Servicepublic class UserServiceImpl implements UserService{    @Autowired    private UserRepository userRepository;    @Override    public User findOneById(Integer id) {        return userRepository.findOne(id);    }}

7.最后是controller

package com.zjb.learning.springcloud.learningspringbootdemo.controller;import com.google.gson.Gson;import com.zjb.learning.springcloud.learningspringbootdemo.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @author zjb * @date 2017/10/29. */@RestControllerpublic class UserController {    @Autowired    private UserService userService;    @GetMapping("/user/{id}")    public String findOneById(@PathVariable Integer id){        Gson gson = new Gson();        return gson.toJson(userService.findOneById(id));    }}

编写代码完成之后利用maven打包,运行jar包,浏览器通过get请求返回查找的数据库信息结果如下
这里写图片描述

4.总结

简单的工程这样就搭建起来了,有了这个简单的工程之后,就可以增加一些其他的功能,从最简单的增删改查,到后面的加入复杂逻辑,都可以在这样的基础上进行开发

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑网络错误651怎么办 打游戏内存不够怎么办 电脑超频后黑屏怎么办 玩lol显示器超频怎么办 win10显示器超频黑屏怎么办 电脑开机显示超频怎么办 玩英雄联盟网卡怎么办 英雄联盟超屏怎么办 三星手机基带未知怎么办 显卡进桌面黑屏怎么办 电脑开机黑屏怎么办打开 ap黑屏打不开了怎么办 老人机屏幕变黑怎么办 电脑一直弹网页怎么办 电脑一直跳网页怎么办 电脑网页一直转圈怎么办 消费者联盟闪退怎么办 门卡住了打不开怎么办 悦平台出现bug怎么办 lol开不了全屏怎么办 韩服lol忘记密码怎么办 股票交易密码忘记了怎么办 指纹解锁密码忘记怎么办 玩lol美服有延迟怎么办 逆水寒黑屏崩溃怎么办 逆水寒游戏崩溃怎么办 lol切换黑屏了怎么办 英雄联盟花屏怎么办 笔记本开机黑屏怎么办 win10 笔记本联盟fps低怎么办 lol超出显示范围怎么办 lol游戏进去黑屏怎么办 lol老是卡顿怎么办 lol无响应怎么办黑屏 电脑进游戏慢怎么办 电脑登录游戏慢怎么办 手机连不上手柄蓝牙怎么办? steam游戏出现bug怎么办 电脑蓝屏后黑屏怎么办 iphonex屏幕跳屏怎么办 玩lol网络卡怎么办