springboot入门
来源:互联网 发布:sql 恢复删除数据 编辑:程序博客网 时间:2024/06/03 21:02
1. 什么是springboot
springboot可以完全不适用xml,而使用约定大于配置的方式来快速的启动项目,可以不通过xml来集成ORM框架,Springdata、Mybatis等。
springboot集成了tomcat,在打包web项目的时候,可以直接打成jar包,而且不需要在环境中安装tomcat,而只需要java环境,就可以用启动jar包的方式来启动web项目。
springboot快速部署和开发的特性,是它可以快速的和spring家族的Springcloud各组件快速的组合。
2. springboot项目初始化
springboot项目可以在线生成:通过网站http://start.spring.io/
可以在网站选择maven或者gradle工程,选择springboot版本。设置Group和Artifact值,还可以设置maven依赖项目,比如web和JPA依赖,当然这些依赖也可以后期项目需要再加入所需的maven依赖。填好项目的各种属性可以点击Generate Project生成并下载springboot工程,也可以利用付费版的idea来生成。
选择Spring Initializr,然后跟网站差不多一步一步选择就能生成项目了。
3. 简单的项目工程搭建
数据库设计:首先设计一个简单的数据库表
配置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.总结
简单的工程这样就搭建起来了,有了这个简单的工程之后,就可以增加一些其他的功能,从最简单的增删改查,到后面的加入复杂逻辑,都可以在这样的基础上进行开发
- SpringBoot入门
- springboot入门
- springboot 入门
- springboot 入门
- SpringBoot入门
- SpringBoot入门
- SpringBoot入门
- Springboot入门
- springboot入门
- SpringBoot入门
- SpringBOOT入门
- SpringBoot 入门
- springboot入门
- SpringBoot入门
- SpringBoot入门
- SpringBoot入门
- SpringBoot入门
- springboot入门
- 读书笔记2 MYSQL必知必会
- ssh原理与运用
- Lintcode-动态规划-最长上升连续子序列
- Servlet生命周期
- 51nod 1592 数列积 莫队算法+树状数组
- springboot入门
- SVN与CVS
- strcpy库函数的实现。。
- Android客户端.So 精简策略
- c语言简易学生管理系统
- [noip2012]Vigenère 密码 题解
- 【设计模式】原型模式
- poj3669 Meteor Shower(bfs java)
- python中sort函数、sorted函数、argsort函数