springboot入门

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=false

server:
  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.
 */
@Service
public 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.
 */
@RestController
public 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.总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值