Spring Boot学习

Spring Boot


一、Spring Boot简介

1.Spring Boot的特点

  • 为局域Spring的开发提供更快的入门体验。
  • 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的要求。
  • 提供一些大型项目中参加的非功能性特性,如嵌入式服务器(内置一个Tomcat)、安全、指标、健康检测、外部配置等。
  • SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。

2.SpringBoot的核心功能

  • 起步依赖
    起步依赖本质上是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加载一起即支持某项功能。
    简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。(导入依赖时代码少)
  • 自动配置
    SpringBoot的自动配置是一个运行时(应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring自动完成的。

二、快速入门

1.创建maven工程(普通maven工程就可以)

在这里插入图片描述

2.添加SpringBoot的起步依赖

pom.xml:

<!--添加SpringBoot的起步依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <dependencies>
        <!--导入web的启动依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3.编写SpringBoot的引导类

package cn.ffcs;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class);
    }
}

4.测试结果

在这里插入图片描述

5.编写Controller类

package cn.ffcs.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/quickController")
public class QuickController {

    @RequestMapping("/quick")
    @ResponseBody
    public String quick(){
        return "quick方法执行了。。。";
    }

}

6.运行结果

注:不用任何配置,直接运行SpringBoot的引导类中main中的run()方法即可。
在这里插入图片描述

三、SpringBoot的热部署

	<!--热部署配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

注意:IDEA进行SpringBoot热部署失败的原因:IDEA默认情况下不会自动编译。
解决方法:对IDEA进行自动编译的配置。配置如下:
在这里插入图片描述
然后按Shift+Ctrl+Alt+/,然后选择Registry
在这里插入图片描述
至此完成热部署(作用:不用每次更新界面资源后重新启动服务器才能看见更新后的效果。)

效果:
在这里插入图片描述

四、springBoot整合Mybatis(注解)

1.添加必要的起步依赖

	<!--添加SpringBoot的起步依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    
	<dependencies>
        <!--导入web的启动依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mybatis起步依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <!-- MySQL连接驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

2.向springBoot的配置文件中添加连接数据库的信息

application.properties

#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

3.创建数据库表

DROP TABLE IF EXISTS `user`; 
CREATE TABLE `user` ( 
	`id` int(11) NOT NULL AUTO_INCREMENT, 
	`username` varchar(50) DEFAULT NULL, 
	`password` varchar(50) DEFAULT NULL, 
	`name` varchar(50) DEFAULT NULL, 
	PRIMARY KEY (`id`) 
	) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

INSERT INTO `user` VALUES ('1', 'zhangsan', '123', '张三'); 
INSERT INTO `user` VALUES ('2', 'lisi', '123', '李四');

4.编写对应的实体类

在这里插入图片描述

5.编写dao/Mapper接口

package cn.ffcs.dao;

import cn.ffcs.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface IUserDao {

    @Select("select * from user")
    public List<User> queryUserList();
}

6.编写Controller

package cn.ffcs.controller;

import cn.ffcs.dao.IUserDao;
import cn.ffcs.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class UserController {

    @Autowired
    private IUserDao iUserDao;

    @RequestMapping("/queryUser")
    @ResponseBody
    public List<User> queryUser() {
        List<User> users = iUserDao.queryUserList();
        return users;
    }
}

7.编写springBoot的引导类,并运行

package cn.ffcs;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MySpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class);
    }
}

8.运行结果

在这里插入图片描述

五、SpringBoot整合Junit

1.导入Junit的起步依赖

	<!--测试的起步依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

2.编写测试类

package cn.ffcs.test;

import cn.ffcs.MySpringBootApplication;
import cn.ffcs.dao.IUserDao;
import cn.ffcs.domain.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MySpringBootApplication.class)
public class TestUser {

    @Autowired
    private IUserDao iUserDao;

    @Test
    public void test(){
        List<User> users = iUserDao.queryUserList();
        System.out.println(users);
    }
}

3.运行结果

在这里插入图片描述

六、springBoot整合spring Data Jpa

1.添加spring Data Jpa的起步依赖

<!-- springBoot JPA的起步依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

2.添加数据库驱动依赖

<!-- MySQL连接驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>

3.在application.properties中配置数据库和jpa的相关属性

#DB Configuration:
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_test?useUnicode=true&characterEncoding=utf-8&userSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root

#JPA Configuration:
spring.jpa.database=MySQL
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy

4.创建实体配置实体

package cn.ffcs.domain;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    private String password;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

5.编写XxxRepository

package cn.ffcs.repository;

import cn.ffcs.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface UserRepository extends JpaRepository<User,Long> {
    public List<User> findAll();
}

6.编写测试类

package cn.ffcs;

import cn.ffcs.domain.User;
import cn.ffcs.repository.UserRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootJpaApplication.class)
public class JpaTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test(){
        List<User> allUser = userRepository.findAll();
        System.out.println(allUser);
    }

}

七、springboot整合redis

1.添加redis的起步依赖

<!-- 配置使用redis启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2.在application.properties配置redis的连接信息

#Redis
spring.redis.host=127.0.0.1
spring.redis.port=6379

3.注入RedisTemplate测试redis操作

package cn.ffcs;

import cn.ffcs.domain.User;
import cn.ffcs.repository.UserRepository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootJpaApplication.class)
public class RedisTest {

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    @Autowired
    private UserRepository userRepository;

    @Test
    public void test() throws JsonProcessingException {
        //1.从rides中获取数据 数据形式json字符串
        String userListJson = redisTemplate.boundValueOps("user findAll").get();
        //2.判断redis中是否存在数据
        if(null==userListJson){
            //3.不存在数据 从数据库查询
            List<User> all = userRepository.findAll();
            //4.将查询出的数据存储到rides中
            //4.1将list集合转换成json格式的字符串并存储,使用jackson进行转换
            ObjectMapper objectMapper = new ObjectMapper();
            userListJson = objectMapper.writeValueAsString(all);
            redisTemplate.boundValueOps("user findAll").set(userListJson);

            System.out.println("***********从数据库中获取到user数据***********");
        }
        else{
            System.out.println("***********从redis缓存中获取到user数据***********");
        }
        //4.将数据在控制台打印
        System.out.println(userListJson);
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值