舒大少博客

一个95后少年的个人博客

当前时间为:
欢迎大家来到舒大少博客http://admin.evshou.com,广告合作以及淘宝商家推广请微信联系15357240395

2020java微服务架构六之springboot教程

2021-02-05 14:30:22
swq1822677238

手机扫码查看

2020java微服务架构六之springboot教程

2020java微服务架构六之springboot教程

一、SpringBoot介绍

SpringBoot是由pivotal团队研发的,SpringBoot不是一门新技术,只是将之前的Spring,SpringMVC,data-jpa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开发。

SpringBoot就是一个工具集。

SpringBoot的特点:

1.SpringBoot项目不需要模板化的配置
2.SpringBoot中整合第三方框架时,只需要导入相应的starter依赖包,就自动整合了
3.SpringBoot默认只有一个.properties的配置文件,不推荐使用xml,后期会采用.java文件去编写配置信息
4.SpringBoot工程在部署时,采用的是jar包方式,内部自动依赖Tomcat容器,提供了多环境的配置
5.后期要学习的微服务框架SpringClound需要建立在SpringBoot的基础上

二、SpringBoot快速入门(重点)

2.1 快速创建 SpringBoot

2.1.1 选择构建项目的类型


2.1.2 项目的描述


2.1.3 指定SpringBoot版本和需要的依赖

2.1.4 导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>//在starter后面追加 -web
</dependency>

2.1.5 编写Controller

2.1.6 测试


2.2  SpringBoot的目录结构

2.2.1 pom.xml 文件

1.指定了一个父工程:指定当前工程为SpringBoot,帮助我们声明了starter依赖的版本
2.项目的元数据:包名,项目名,版本号
3.指定了 properties 信息:指定了java的版本为1.8
4.导入依赖:默认情况下导入spring-boot-starter,spring-boot-starter-test
5.插件:spring-boot-maven-plugin

2.2.2 .gitignore 文件

默认帮我们忽略了一些文件和目录,避免提交到git仓库中

2.2.3 src目录

-src
  -main
    -java
     -包名
      启动类.java # 需要将controller类,放在启动类的子包中或者同级包下
    -resources
     -static    #存放静态资源
     -templates  #存放模板页面的
     application.properties #SpringBoot提供的唯一的配置文件
  -test   # 测试

2.3 SpringBoot启动方式

2.3.1 运行启动类的main方法

2.3.2 maven指令:mvn spring-boot:run

2.3.3 采用jar包的方式运行

将当前项目打包成一个jar包,并通过 java -jar jar文件

三、SpringBoot常用注解(重点)

3.1 @Configuration和 @Bean

之前使用SSM开发时,在xml文件中编写bean标签,但是springboot不推荐使用xml
@Configuration注解相当于beans标签
@Bean 相当于bean标签
id=”方法名” | 注解中的name属性(优先级更高)
class=”方法的返回结果”

@Configuration  //代表当前类是一个配置类
public class UserConfig {
    @Bean       // 构建一个实例,放到spring容器 
    public User user(){
        return new User(1,"admin");
    }
}

3.2 @SpringBootConfiguration

@SpringBootConfiguration 就是一个组合注解:

@SpringBootConfiguration 就是 @Configuration注解,代表启动类就是一个配置类

@EnableAutoConfiguration 帮你实现自动装配,SpringBoot工厂启动时,运行一个SpringFactoriesLoader的类,加载META-INF/spring.factories配置类(已经开启的),通过SpringFactoriesLoader中的load方法,以for循环的方式,一个一个加载。

好处:无需编写大量的整合配置信息,只需要按照springboot提供好的约定去整合即可

坏处:如果说你导入了一个starter依赖,那么你就需要填写必要的配置信息

手动关闭自动装配指定内容:@SpringBootApplication(exclude = QuartzAutoConfiguration.class)

@ComponentScan 相当于<context:compent-scan basePackage=”包名” />帮助注解扫描的

四、SpringBoot常用配置(重点)

4.1 SpringBoot的配置文件格式

SpringBoot的配置文件支持 properties 和 yml ,甚至还支持json

更推荐使用 yml文件格式:

1.yml文件会根据换行和缩进帮助我们管理配置文件所在位置
2. yml 文件,相比properties更轻量级一些

yml的劣势:

1.严格遵守换行和缩进
2.在填写value时,一定要在:后面跟上空格

4.2 多环境配置

在application.yml 文件中添加一个配置项:

spring:
  profiles:
    active: 环境名

在 resources目录下创建多个 application-环境名.yml 文件即可,在部署工程时,
通过 java -jar jar文件 –spring.properties.active=环境

4.3 引入外部配置文件信息

和传统的SSM方式不一样,通过 @Value的注解去获取properties/yml文件中的内容。
如果在yml文件中需要编写大量的自定义配置,并且具有统一的前缀时,采用如下方式

@ConfigurationProperties(prefix = "aliyun")
@Component
@Data
public class AliyunProperties {
    private String aaaa;
    private String bbbb;
}

yml配置文件

aliyun:
  aaaa: aaaaa
  bbbb: bbbbb

4.4 热加载

4.4.1 导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

4.4.2 settings配置


4.4.3 重新构建工程

五、SpringBoot整合Mybatis(重点)

5.1 xml方式整合mybatis

xml方式在编写复杂SQL时,更适合

5.1.1 导入依赖

<!-- mysql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid连接 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>
<!-- mybatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

5.1.2 编写配置文件

1.准备实体类 并实现Serializable接口
2.准备mybatis逆向工程
3.yml文件

mybatis:
  # 扫描映射文件
  mapper-locations: classpath:mapper/*.xml
  # 配置别名扫描的包
  type-aliases-package: com.evshou.admin.firstspringboot.entity
  configuration:
    # 开启驼峰映射配置
    map-underscore-to-camel-case: true
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///库名?serverTimezone=UTC
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

5.1.4 测试

5.2 注解方式整合mybatis

注解方式在编写配置简单,简单sql推荐使用

5.2.1 创建 实体类的 mapper接口

5.2.2 添加mybatis注解

针对增删改查:@Insert,@Delete,@Update,@Selete
还是需要在启动类中添加 @MapperScan 注解

@Select(“select*from user”)
List<User> queryAllUser();

5.2.3 添加配置

logging:
  level:
    com.evshou.admin.firstspringboot.mapper: DEBUG

5.2.4 测试,查看日志

创建测试类并继承FirstSpringBootApplicationTests,自动装配mapper对象

5.3 SpringBoot整合分页助手

5.3.1 导入依赖

<!-- 分页 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

5.3.2 测试

六、SpringBoot整合JSP

6.1 导入依赖

<!-- jsp核心引擎依赖-->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<!-- JSTL -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

6.2 创建 jsp页面

6.3 配置前缀和后缀

spring:
  mvc:
    view:
      prefix: /WEB-INF/
      suffix: .jsp

6.4 创建 controller

@Controller
public class JspController {
    @GetMapping("/index")
    public String index(Model model){
        model.addAttribute("username","张三");
        return "index";
    }
}

 

发表评论

邮箱地址不会被公开。 必填项已用*标注