使用SpringBoot构建独立生产级别的Spring应用


前言

前面已经介绍了spring的相关知识,虽然spring的代码是轻量级的,但配置确实重量级的,springBoot对spring的缺点进行改善和优化,使程序员不必为配置付出太多的烦恼,使自己全身心的投入到业务逻辑代码中,提高开发效率。


一、Spring Boot概述

1.1 Spring的优缺点

优点
1.开源,轻量级: 非侵入式的一站式框架,简化企业级应用开发。
2.控制反转(IOC),依赖注入(DI):降低了组件之间的耦合性,实现了软件各层之间的解耦。
3.面向切面(AOP):利用它可以很容易实现一些拦截,如事务控制等。
4.spring对于主流的应用框架提供了很好的支持,例如mybatis。
5.spring提供有自己的mvc(SpringMVC)实现。

缺点:
1.配置重量级:
即使引入注解,但是仍然需要编写大量的模板化配置文件(开启注解扫描,开启事务注解,配置事务管理类等)。
2.项目的依赖管理困难
在环境搭建时,需要分析要导入大量库的坐标,一旦选错版本,随之而来的不兼容问题会严重妨碍项目的开发进度。

Spring Boot对上述spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员全身心的投入到逻辑业务的代码编写中,不必为配置付出太多的烦恼

1.2 SpringBoot

Spring Boot是由Pivotal团队提供的在spring框架基础之上开发的框架,其设计目的是用来简化应用的初始搭建以及开发过程。

注意:SpringBoot没有替换Spring,而是和Spring框架紧密结合,以约定大于配置的核心思想,从而使开发人员不再需要定义样板化的配置,用于提升Spring开发者体验的工具.

SpringBoot官网:https://spring.io/projects/spring-boot
在这里插入图片描述

Spring Boot你只需要“run”就可以非常轻易的构建独立的、生产级别的spring应用。


二、SpringBoot特点

2.1SpringBoot特点

1.创建独立的spring应用程序(快速)
2.直接内嵌tomcat、jetty和undertow(三款服务器)
3.提供了固定化的“starter”配置,以简化构建配置
4.尽可能的自动配置spring和第三方库
5.提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
6.完全没有代码生成和xml配置文件

总结来说就是项目创建快速,内置服务器,提供多种产品功能,基于注解的配置思想

2.2SpringBoot的核心功能

起步依赖
起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。
自动配置
SpringBoot的自动配置功能,会对我们配置的一些类,自动注入到spring容器中。特别是对于依赖的jar包中的一些类,在我们的工程用到这些类实例时,直接@Autowired注入使用就可以。
(@EnableAutoConfiguration注解实现了对Spring Boot应用自动装配的功能)


三、SpringBoot开发环境构建

3.1 Spring Boot项目创建

本文介绍官网配置生成的方式,只需要在官网上选择配置项,在线生成并下载,解压到平时所放项目的文件夹中即可。
网址:https://start.spring.io/
在这里插入图片描述
点击GENERATE即可生成SpringBoot项目

关于项目的结构可以参考下图示例
在这里插入图片描述

3.2 Spring Boot配置文件

Spring Boot使用一个全局的配置文件,配置文件名是固定的(application)

yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心.

yml配置示例
在这里插入图片描述

yaml基本语法:
1.语法结构:key:空格value 以此来表示一对键值对(空格不能省略)
2.以空格的缩进来控制层级关系,
3.只要是左边对齐的一列数据都是同一个层级的。

使用@ConfigurationProperties注解标签将配置文件中的内容映射到类中的属性.
@ConfigurationProperties(prefix = “user” )

3.3 SpringBoot自动配置

Springboot实现自动装配的核心仍然是使用注解标签

@SpringBootApplication是springboot核心注解,其中包含:

 @ComponentScan它默认扫描的是与该类同级的类或者同级包下的所有类
 @EnableAutoConfiguration是这里最重要的注解,它实现了对Spring Boot应用自动装配的功能

/*@SpringBootApplication是springboot核心注解,其中包含
     @ComponentScan它默认扫描的是与该类同级的类或者同级包下的所有类
	 @EnableAutoConfiguration是这里最重要的注解,它实现了对Spring Boot应用自动装配的功能*/
@SpringBootApplication
public class MyBackServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(MyBackServerApplication.class, args);
	}
}

@Configuration:加入@Configuration 注解,表明这就是一个配置类。

/*表明这是一个配置类*/
@Configuration
public class DruidDataSourceConfig {
}

3.4 SpringBoot集成JDBC和阿里数据源

1.引入jdbc支持,在pom.xml中引入如下配置:

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

2.导入阿里数据源jar

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

3.在yml文件中配置数据源信息和注册阿里数据库连接池

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver 
    url: jdbc:mysql://localhost:3306/team?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: '0521'
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 1
    maxActive: 20
    filters: stat

4.在java代码中添加一个DruidDataSourceConfig配置类

/*表明这是一个配置类*/
@Configuration
public class DruidDataSourceConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid() {
        return new DruidDataSource();
    }

    @Bean
    public ServletRegistrationBean druidStatViewServlet() {
        //ServletRegistrationBean提供类的进行注册
        ServletRegistrationBean servletRegistrationBean =
                new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //添加初始化参数:initParams
        //白名单:
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        //IP黑名单(同时存在时,deny优先于allow)
        //如果满足deny,就提示:sorry,you are not permitted to view this page
        servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
        //登录查看信息的账号和密码
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "123456");
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }


    @Bean
    public FilterRegistrationBean druidStatFilter() {
        FilterRegistrationBean filterRegistrationBean =
                new FilterRegistrationBean(new WebStatFilter());
        //添加过滤规则
        filterRegistrationBean.addUrlPatterns("/*");
        //添加需要忽略的格式信息
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif," +
                "*.jpg,*.png, *.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }

}

添加完配置类后即可使用Sql监控功能
1.访问http://localhost:9966/druid/login.html(配置文件中的端口号)

2.使用配置类中配置好的账号密码登录
在这里插入图片描述
3.查看SQL监控功能
在这里插入图片描述

3.5 SpringBoot集成mybatis

1.引入mybatis支持,在pom.xml中引入如下配置:

	    <dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.4</version>
		</dependency>

2.在yml文件中配置

mybatis:  
  type-aliases-package: com.ffyc.myfirstboot.model
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
   map-underscore-to-camel-case: true
   cache-enabled: true

3.@MapperScan注解
在这里插入图片描述
启动类上添加@MapperScan注解标签,扫描dao下面的接口,然后包下面的所有接口在编译之后都会生成相应的实现类

4.日志打印

logging:
  level:
    com.ffyc.myfirstboot.dao: trace
  file:
    name: D:\\logs\\log.log

3.6 配置汇总

整个项目的核心配置文件如下所示,相比于Spring的重量级配置,springBoot的配置非常的简化,只需要编写少量的配置文件即可

server:
  port: 9966

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/team?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 1
    maxActive: 20
    filters: stat
 

mybatis:
  type-aliases-package: com.ffyc.myfirstboot.model
  mapper-locations: classpath:mapper/*Mapper.xml
  configuration:
   map-underscore-to-camel-case: true
   cache-enabled: true


logging:
  level:
    com.ffyc.myfirstboot.dao: trace
  file:
    name: D:\\logs\\log.log

总结

本文主要介绍了SpringBoot的概述,项目的创建以及开发环境的搭建。SpringBoot是和Spring框架紧密结合用于提升Spring开发者体验的工具,不是Spring的替代品。利用SpringBoot可以帮助我们快速的搭建Spring项目,并且与当今流行的框架例如springMVC和mybatis无缝整合,进而提高我们的开发效率。在以后的学习中读者可以进一步学习SpringBoot的实现原理,扩展自己的编程思维。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JinziH Never Give Up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值