spring-boot-dependencies

一般用来放在父项目中,来声明依赖,子项目引入相关依赖而不需要指定版本号,好处就是解决依赖冲突,统一管理依赖版本号

利用pom的继承,一处声明,处处使用。在最顶级的spring-boot-dependencies中,使用dependencyManagement让所有子项目引用一个依赖而不用显式的列出版本号,将结构信息,部署信息,共同的依赖信息放置在统一的位置。dependencyManagement只声明依赖,并不真正引入,因此子项目需要通过dependencies引入相关依赖。

maven依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-dependencies</artifactId>
  4. <version>1.5.6.RELEASE</version>
  5. <type>pom</type>
  6. <scope>import</scope>
  7. </dependency>

spring-boot-devtools

devtools是spring boot提供的工具。运行打包的应用程序时,开发人员工具会自动禁用。如果你通过java -jar或者其他特殊的类加载器进行启动时,都会被认为是“生产环境的应用”。

将依赖标记为optional可选是一种最佳做法,可以防止将devtools依赖传递到其他模块中。

maven依赖
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-devtools</artifactId>
  4. <optional>true</optional>
  5. </dependency>

spring-boot-devtools的作用

1、禁用默认缓存

Spring Boot支持的一些库中默认会使用缓存。虽然缓存在生产中非常有益,但是在开发过程中有可能产生反效果,devtools将默认禁用这些缓存选项

2、自动重启

类路径的文件发生更改时,会触发自动重启,某些资源修改不一定需要触发重启,例如Thymeleaf模板。默认情况下更改/META-INF/maven , /META-INF/resources , /resources , /static , /public或/templates中的资源不会触发重启,但会触发实时重新加载。 如果要自定义这些排除项,可以使用spring.devtools.restart.exclude属性,如果想保留上面的默认排除项,还想增加新的,可以使用spring.devtools.restart.additional-exclude属性

spring-boot-starter-actuator

Actuator提供了很多生产级的特性,比如监控和度量Spring Boot应用程序。这些特性可以通过REST端点、远程shell和JMX获得。

1、介绍

Maven引入依赖

  1. <dependency>
  2. <!-- It is in order to get app info -->
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-actuator</artifactId>
  5. </dependency>

应用启动日志会有如下信息,表明获取一些信息的url

下面列出最常用的一些

2、Actuator定制化

主要是两点:重命名端点、启用或禁用端点

解释一下上图配置

  将端点整体禁用,然后autoconfig、shutdown、beans启用,将shutdown的路径由/shutdown改为/kill

3、保护 Actuator 端点

actuator就是为了查看应用的一些信息,其中不乏一些敏感信息,对这些端点进行保护还是很有必要。

使用Spring Security,下面以/shutdown,/metrics端点为例

① 权限认证

  1. @Override
  2. protected void configure(HttpSecurity http) throws Exception {
  3. http
  4. .authorizeRequests()
  5.   .antMatchers("/").access("hasRole('READER')")
  6.   .antMatchers("/shutdown","/metrics").access("hasRole('ADMIN')")
  1.   .antMatchers("/**").permitAll()
  2. .and()
  3. .formLogin()
  4.   .loginPage("/login")
  5.   .failureUrl("/login?error=true");
  6. }

要能够访问/shutdown,必须用一个带有admin权限的用户

② 用户身份认证

  1. @Override
  2. protected void configure(AuthenticationManagerBuilder auth) throws Exception {
  3. auth.userDetailsService(new UserDetailsService() {
  4. @Override
  5. public UserDetails loadUserByUsername(String username)
  6. throws UsernameNotFoundException {
  7. UserDetails user = readerRepository.findOne(username);
  8. if (user != null) {
  9. return user;
  10. }
  11. throw new UsernameNotFoundException(
  12. "User '" + username + "' not found.");
  13. }
  14. })
  15. .and()
  16. .inMemoryAuthentication()
  17. .withUser("admin").password("s3cr3t")
  18. .roles("ADMIN", "READER");
  19. }

userDetailsService是使用repository来操作数据库查询出对应的用户,inMemoryAuthentication()是往内存中添加一个用户,拥有角色ADMIN、READER。

通过management.context-path设置actuator基础路径(公共前缀),对actuator端点进行批量保护

spring-boot-starter-security

人如其名,是用来保证应用安全的,核心功能授权和认证

默认访问用户密码

如果没有进行额外配置,那么应用启动会生成一串默认密码。用户名为user,密码在日志文件或控制台寻找 Using default security password: 62ccf9ca-9fbe-4993-8566-8468cc33c28c

当然也可以自定义访问用户,在application.yml文件security.user.name,security.user.password制定

还可以通过自定义编写配置类继承WebSecurityConfigurerAdapter类,并在配置类上面加上@Configuration@EnableWebSecurity两个注解,重写 protected void configure(HttpSecurity http)   protected void configure(AuthenticationManagerBuilder auth)  两个方法进行授权和认证,可以参考上面两段代码

SpringBoot-核心依赖说明的更多相关文章

  1. 浅谈SpringBoot核心注解原理

    SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解@SpringBootApplication以及run方法,理解下springBoot为什么不需要XML,达到零配置 ...

  2. SpringBoot(二) SpringBoot核心配置文件application.yml/properties

    我们都知道在Spring中有着application.xml文件对Spring进行相关配置,通过web.xml中的contextConfigLocation指定application.xml文件所在位 ...

  3. Springboot核心注解

    运行文中的代码需要在项目构建中引入springboot 相关依赖. ① @configuration configuration,用来将bean加入到ioc容器.代替传统xml中的bean配置.代码示 ...

  4. 深入理解SpringBoot核心机制《spring-boot-starter》

    深入理解SpringBoot核心机制<spring-boot-starter> 前言: 对于这几年java火爆天的springBoot我相信大家都有所使用过,在springBoot的项目中 ...

  5. 这一次搞懂SpringBoot核心原理(自动配置、事件驱动、Condition)

    @ 目录 前言 正文 启动原理 事件驱动 自动配置原理 Condition注解原理 总结 前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本 ...

  6. IntelliJ IDEA中如何再次调出springboot的依赖窗口

    原文链接:https://blog.csdn.net/qq_38138069/article/details/102528587 IDEA中如何再次调出springboot的依赖窗口,随时可以根据喜好 ...

  7. SpringBoot核心注解应用

    1.今日大纲 了解Spring的发展 掌握Spring的java配置方式 学习Spring Boot 使用Spring Boot来改造购物车系统 2.Spring的发展 Spring1.x 时代 在S ...

  8. SpringBoot 核心配置

    1. 入口类和 @SpringBootApplication Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法 ...

  9. springboot深入学习(一)-----springboot核心、配置文件加载、日志配置

    一.@SpringBootApplication @SpringBootApplication是spring boot的核心注解,源码如下: 相当于:@Configuration+@EnableAut ...

  10. SpringBoot核心

    1.基本配置 1.1入口类和@SrpingBootApplication SpringBoot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的 ...

随机推荐

  1. 成功解决Developer Express和Janus WinForms Controls中控件的冲突

    最新在做一套GIS系统的框架,其中用到了Janus WinForms Controls和Developer Express这两个插件. 我用DE的xtraTabbedMdiManager组件来管理我的 ...

  2. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-4.动态Sql语句Mybaties SqlProvider

    笔记 4.动态Sql语句Mybaties SqlProvider     简介:讲解什么是动态sql,及使用 1.             @UpdateProvider(type=VideoSqlP ...

  3. Python中使用第三方库xlrd来写入Excel文件示例

    Python中使用第三方库xlrd来写入Excel文件示例 这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表 ...

  4. HBase管理与监控——HBase region is not online

    发现有些regison程序操作失败,其他region 都是正常的,重启regionserver 后依然报同样的错误. 首先进入hbase的bin目录,执行下面命令检查表是否有存储一致性问题: hbas ...

  5. AES加密解密 加密解密使用

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Sec ...

  6. Ubuntu16.04安装K8s步骤和踩坑记录【不错】

    文章目录环境信息安装步骤系统配置修改安装docker安装kubectl,kubelet,kubeadm配置Master配置Node部署结果检查K8S部署mysql学习新建mysql-rc.yaml创建 ...

  7. 安装horizon

    在控制节点上安装 controllerHost='controller' ADMIN_PASSWD='Ideal123!' 1.安装dashboard组件 yum -y install opensta ...

  8. 【OpenCV】轮廓的特征矩Moment

    opencv中的矩主要包括以下几种:空间矩,中心矩和中心归一化矩. class Moments { public: ...... // 空间矩 double m00, m10, m01, m20, m ...

  9. 算法flink

    和Yarn-Cluster模式不同,Session模式的资源在启动Yarn-Session时候就已经启动了,后续提交的作业全都在已申请的资源空间内运行,比较适合小而多的作业 # 启动yarn-sess ...

  10. 【Java学习】类、对象、实例—类是对象的抽象,对象是类的实例

    类.对象.实例的关系是什么,如果不能很好的理解什么是类什么是对象就无法讲清楚, 类:某种事物与另一种事物具有相似性,比如哈士奇和泰迪,我们发现他们有一些相似的特性和行为,在生物学上,他们都属于“狗”, ...