文章目录
前言
前面已经介绍了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的实现原理,扩展自己的编程思维。