SpringBoot基础学习

SpringBoot快速入门与整合技术
本文介绍SpringBoot的基本概念,包括其优点、特点及快速入门指南。详细讲解了环境搭建、热部署、原理分析等内容,并深入探讨了SpringBoot如何整合Mybatis、Junit、SpringDataJPA和Redis等技术。

1.简介

1.1spring优缺点

    DI   IOC    AOP 

    配置文件比较繁琐

1.2SpringBoot特点

    约定优于配置

    起步依赖、自动配置

2.springBoot快速入门

2.1环境搭建

    2.1.1创建一个普通的Maven模块(不需要使用骨架)

SpringBoot要求,项目要继承SpringBoot的起步依赖spring-boot-starter-parent

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>

SpringBoot要集成SpringMVC进行Controller的开发,所以项目要导入web的启动依赖

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

编写测试类

    Controller编写和测试

2.2 入门解析

所有的SpringBoot工程都要必须继承spring-boot-starter-parent

2.3工程的热部署

IDEA需要做一些相关配置

2.4IDEA快速创建一个SpringBoot项目

3.springBoot原理分析

3.1起步依赖

帮助开发者导入依赖、控制依赖版本(不再出现版本冲突问题)

3.2自动配置

@SpringBootApplication  等价与下边三个注解

@SpringBootConfiguration   

@EnableAutoConfiguration   @import   selectImports    getcandidateconfigurations

 @ComponentScan

当需要自定义配置时,可以在资源包resources下创建一个application.properties

例如 :server.port=8081

           server.servlet.context-path=/demo

4.SpringBoot的配置文件

4.1通过配置文件里的属性赋值

@value("${name}")

private String name;      通过配置文件里的属性给name赋值

@value("${person.addr}")

private String addr;      通过配置文件里的属性给addr赋值

精确匹配,但是配置太多会很繁琐

----------------------------------------------------------

private String name;  提供get/set方法

private String addr;   提供get/set方法

在类上加一个注解:@ConfigurationProperties( prefix = "person" )

5.SpringBoot整合其他技术

5.1 mybatis起步依赖

<!--mybatis起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>

5.1.2 添加数据库驱动坐标

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

5.1.3 添加数据库连接信息

在application.properties中添加数据量的连接信息

#DB Configuration:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=1234

5.14 建表,实体类,

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', '李四');
public class User {
    // 主键
    private Long id;
    // 用户名
    private String username;
    // 密码
    private String password;
    // 姓名
    private String name;
@Mapper
public interface UserMapper {
    public List<User> queryUserList();
}

在src\main\resources\mapper路径下加入UserMapper.xml配置文件"

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yunque.mapper.UserMapper">
    <select id="queryUserList" resultType="user">
select * from user
</select>
</mapper>

在application.properties中添加mybatis的信息

#spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=com.itheima.domain
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml

5.2 SpringBoot整合Junit

5.2.1 添加Junit的起步依赖

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

编写测试类

package com.yunque;

import com.yunque.entity.User;
import com.yunque.mapper.UserMapper;
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=Ceshi2019Application.class)
public class MybatisTest {
    @Autowired
    private UserMapper userMapper;

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

5.3 SpringBoot整合Spring Data JPA

5.3.1 添加Spring Data JPA的起步依赖

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

5.3.2 添加数据库驱动依赖

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

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

#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

#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

c.创建实体类

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

@Entity
public class Role {
    // 主键
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    // 用户名
    private String username;
    // 密码
    private String password;
    // 姓名
    private String name;
package com.yunque.mapper;

import com.yunque.entity.Role;
import com.yunque.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;

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

自己写RoleMaper.xml

测试

@RunWith(SpringRunner.class)
@SpringBootTest(classes=Ceshi2019Application.class)
public class MybatisTest {

    @Autowired
    private RoleRepository roleRepository;

    @Test
    public void test02(){
        List<Role> roleList = roleRepository.findAll();
        System.out.println(roleList);
    }

注意:如果是jdk9,执行报错如下:

原因:jdk缺少相应的jar 解决方案:手动导入对应的maven坐标,如下:

<!--jdk9需要导入如下坐标-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>

5.4 SpringBoot整合Redis
5.4.1 添加redis的起步依赖

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

5.4.2 配置redis的连接信息.

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

5.4.3 注入RedisTemplate测试redis操作

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootJpaApplication.class)
public class RedisTest {
@Autowired
private UserRepository userRepository;
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Test
public void test() throws JsonProcessingException {
//从redis缓存中获得指定的数据
String userListData = redisTemplate.boundValueOps("user.findAll").get();
//如果redis中没有数据的话
if(null==userListData){
//查询数据库获得数据
List<User> all = userRepository.findAll();
//转换成json格式字符串
ObjectMapper om = new ObjectMapper();
userListData = om.writeValueAsString(all);
//将数据存储到redis中,下次在查询直接从redis中获得数据,不用在查询数据库
redisTemplate.boundValueOps("user.findAll").set(userListData);
System.out.println("===============从数据库获得数据===============");
}else{
System.out.println("===============从redis缓存中获得数据===============");
}
System.out.println(userListData);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值