1.创建Spring Boot项目
1.1.使用IDEA中创建
1.2.使用Spring官网引导新建
访问:https://start.spring.io/ ,即可进入Spring Initializr 引导页面;
项目类型:maven项目;
开发语言:Java;
Spring Boot版本:2.1.8
公司名:com.zhbit
项目名:xiao
点击/Generate/,生成项目文件夹,并导入到IDEA中打开。
项目结构:
.mvn:maven文件;
main:源码目录;
-java:存放源代码;(默认已建的类XiaoApplication的main方法为程序入口)
-resource:存放静态资源,例如:CSS、JS、HTML模板、图片等
test:测试目录;
2.项目结构
业务背景:使用Spring Boot项目,基于三层架构下,实现用户登录功能。
- Web层:UserController
(MVC模式后面再讲,因此这里只写一个控制器,作为对下层的调用。)
-
功能接口层:IUserServices
(作用:向上提供业务接口的定义,向下提供访问约束;有利于双方同时开工。)
业务实现层:UserServiceImpl
数据访问层:UserDao
domain实体模型:User
3.项目依赖引入(pom.xml)
pom.xml为maven中用于自动引用依赖的配置文件,所以本项目中需要用到的Spring Boot、mysql都要通过配置它,把依赖自动引入到项目中。
基于Spring MVC开发的Web依赖;
MySQL数据库驱动;
JDBC数据访问依赖;
pom.xml参考代码如下:
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.8.RELEASE
com.zhbit
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-thymeleaf
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-devtools
runtime
true
org.springframework.boot
spring-boot-maven-plugin
备注:在pom.xml中引入依赖后,需要刷新一下maven,让其在本地依赖库或远程依赖库中进行自动下载。
4.设置项目配置文件
Spring Boot项目中,全局配置文件都放在静态资源resources中的src\main\resources\application.properties文件中,因此需要在此配置全局变量信息,例如:Tomcat端口、数据库链接字符串、数据库访问账号和密码等。
#端口
server.port=80
#mysql相关配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=CTT
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10
5.试运行
新建项目时,自动自动生成了一个程序入口,放在src\main\java\com\zhbit\demo\DemoApplication.java文件中。此为本项目的程序入口。
package com.zhbit.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
同时,增加一个控制器对象,名为HelloWorldController,用于在默认访问"/"根目录时返回HelloWorld!
/*
*控制器类:HelloWorldController
*/
package com.zhbit.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@RequestMapping("/")
public String helloworld(){
return "Hello World!";
}
}
生成——生成项目(编译)——运行Run。
若运行成功,则会返回Spring字样在调试台中,并显示当前Tomcat使用端口。
并在浏览器中输入http://localhosde:80/访问本地Tomcat服务器。
6.创建POJO:domain——>User
用于进行实现对象化暂存存储数据,以便业务逻辑进行处理。
package com.zhbit.demo.domain;
import org.springframework.stereotype.Service;
public class User {
private Long id;
private String name;
public User() {
super();
}
public User(String name) {
super();
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
7.创建前后端交流的服务接口:IService——>IUserService
此接口对上,为Controller提供调用约定;
此接口向下,提供实现规范和要求;
package com.zhbit.demo.IService;
import com.zhbit.demo.domain.User;
public interface IUserService {
/**
* 新建用户
* @param user
*/
void save(User user);
/**
* 查询用户
* @param id
* @return User Objcet
*/
User get(Long id);
}
8.DAL层的数据访问:dao——>UserDao
作用:把二维表数据变成User对象集合。
package com.zhbit.demo.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import com.zhbit.demo.domain.User;
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void insert(User user){
jdbcTemplate.update("insert into t_user(name) values(?)",user.getName());
}
public User get(Long id){
RowMapper rowMapper = new BeanPropertyRowMapper(User.class);
User user = jdbcTemplate.queryForObject("select * from t_user where id=?", rowMapper,id);
return user;
}
}
9.实现业务接口:service——>UserServiceImpl
作用:调用dao获取数据,填充到domain中,并对业务接口的实现。
package com.zhbit.demo.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zhbit.demo.domain.User;
import com.zhbit.demo.IService.IUserService;
import com.zhbit.demo.dao.UserDao;
import java.util.List;
//在Spring中,继承哪个接口,就是实现那个接口。
@Service
public class UserServiceImpl implements IUserService {
//让Spring容器实现DI依赖注入。
@Autowired
private UserDao dao;
//实现接口,需要重写接口的所有方法。
@Override
public void save(User user)
{
dao.insert(user);
}
@Override
public User get(Long id){
return dao.get(id);
}
}
10.前端在控制器中调用接口:controller——>UserController
package com.zhbit.demo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zhbit.demo.domain.User;
import com.zhbit.demo.IService.IUserService;
@RestController
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/user/create")
public String createUserByName(String name){
User user = new User(name);
userService.save(user);
return "save successfully";
}
@RequestMapping("/user/get")
public User queryUserById(Long id){
User user=userService.get(id);
return user;
}
}
11.运行
11.1.通过Id查询用户,例如 :http://localhost/user/get?id=1
11.2.创建一个用户,名为chanel,例如:http://localhost/user/create?name=chanel