菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
431
0

XD 03

原创
05/13 14:22
阅读数 9379

springboot 中的静态资源都是可以直接访问的, 并不需要通过 controller.

所以,这种静态资源的安全如何考虑.  比如静态的一些图片。

现在都是前后端分离部署了. 前端 图片等如何保证安全呢?

实际上,

1. 那些保密的图片, 可以不放在类似 static 或者是前端服务器, 这样就不能直接访问到, 要想访问到, 必须也要通过 controller 认证才能访问. 这样的情况, 重要的图片可以通过图片服务器存储, 对外部开放接口, 只有 application 可以访问.

2. 或者, 通过类似防火墙白名单的方式, 比如你的应用只在内网, 那么, 可以限制外网访问.

Jar 包

选择 pom -> run as : mvn install 就是打包成 jar 包了,地址在 项目的 target 目录内.

 

java -jar 就可以启动这个 jar 包. 但是需要添加 manifest 启动文件. 增加这个依赖, 会自动创建 manifest 到 mvn 打包中.

 

可以通过 反编译文件, 作用 jar 包, 把 class 文件 生成 java 文件.

把 .jar 换成 .zip, 可以简单分析一下.

热部署  devtool 工具

 

加到 pom 里

这样的话,修改代码,就会重启服务, 如果你不想这样, 可以通过修改配置来实现.

在 application.properties 中添加 spring.devtools.restart.exclude=application.properties, 这样, 你修改 application.properties 文件时, 就不会重启

在 application.properties 中设置触发器 spring.devtools.restart.trigger=trigger.txt (在 resource 中)

在 trigger.txt 中可以有 

version = 1

比如你修改这个 version = 2, 这时,就会触发自动重启. 否则你只修改程序, 而没有修改trigger, 就不会有自动重启.

配置文件

xx.yml, xx.properties.  更推荐 xx.properties

 

实际上都是 key: value 的形式. 只不过 yaml(yml) 有树状结构.(冒号后面: 要有空格)

有配置文件的官方文档: 可以参考. 有哪些配置.

https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#common-application-properties

SpringBoot 配置文件自动映射到属性和实体类

好处是: 取消硬编码

配置文件注入: 可以通过在程序中指定外部的配置文件, 然后通过修改外部文件达到修改配置文件的目的.

需要在 controller 类中增加注解 @PropertySource("{classpath:application.properties}")

@Value("${变量名}")     这个变量名是在 application.properties 配置的

private String filePath;   // 这样, 这个 filePath 就有值了, 值就是 application.properties 中配置的那个地址. 比如任意桌面上的一个文件.

也可以把配置, 做成一个实体类, 比如这个类里有成员变量, 服务器名称, 服务器域名 等等. 然后生成 get, set 方法

这个实体类属性的值, 需要通过 @Value 注解, 将值指定到 application.properties 上.

需要在这个实体类增加3个注解

@Component

@PropertySource("{classpath:application.properties}")

@ConfigurationProperties

如果是使用 @ConfigurationProperties(prefix="xxx") 加前缀的话, 就不需要通过 Value 来映射, 会直接通过前缀和名称的组合, 自动映射.

spring 官方推荐, 把 springBoot 启动类放到根目录下边. 我们目前的项目就不是.

发表评论

0/200
431 点赞
0 评论
收藏