springboot学习心得

Easter79
• 阅读 685

1、mvn package --加载运行一个含有pom.xml的目录并生成target目录
2、mvn dependency:tree 显示项目所有依赖的树状结构
3、业务委托给了Spring Boot的SpringApplication类-通过调用run()执行
4、mvn spring-boot:run 启动服务程序 【localhost:8080执行访问】
5、jar tvf [jar所在目录] 查看jar内部结构
6、java -jar [jar所在目录] 运行一个可执行jar包
7、通过下面代码更改jdk版本:

<properties>
    <java.version>1.8</java.version>
</properties>

8、可以通过将 @EnableAutoConfiguration 或 @SpringBootApplication 注解添加到一个 @Configuration 类上来选择自动配置
9、只需要添加一个 @EnableAutoConfiguration 注解。建议你将它添加到主 @Configuration 类上
10、【非侵占性】如果添加自己的 DataSource bean,默认的内嵌数据库支持将不被考虑。
11、【禁用特定的自动配置】eg: @ EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
12、 @ Service Bean的示例,它使用构建器注入获取一个需要的 RiskAssessor bean。
13、 @SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScan
14、 STS用户可以使用 Relaunch 按钮而不是 Run 按钮
15、运行一个打包的程序并开启远程调试是支持的。代码如下:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n \
-jar target/learn-0.0.1-SNAPSHOT.jar
16、想使用有用的操作系统环境变量:
MAVEN_OPTS=-Xmx1024m -XX:MaxPermSize=128M -Djava.security.egd=file:/dev/./urandom
("egd"设置是通过为Tomcat提供一个更快的会话keys熵源来加速Tomcat的。)
17、通过在classpath下添加一个banner.txt或设置banner.location来指定相应的文件可以改变启动过程中打印的banner
18、要创建一个分层的ApplicationContext(多个具有父子关系的上下文),代码如下:

new SpringApplicationBuilder()
    .showBanner(false)
    .sources(Parent.class)
    .child(Application.class)
    .run(args);

19、设置环境是否属于web:setWebEnvironment(boolean webEnvironment)【适用于Junit测试】
20、如果application.properties属性文件存在环境变量中[系统中或者ide中],则会直接被环境读取
因此,如果想设置环境的port,则只需要在该文件中添加server.port=[指定的port]就可以了。
21、特定的Profile属性:
除了application.properties文件,特定配置属性也能通过命令惯例application-{profile}.properties来定义。【特定profile文件会覆盖默认的配置】
22、用@ PropertySource注解可以加载.properties,但不能加载YAML
23、用@ Value("${property}")注解的使用
24、如果使用注解,则需要全部使用注解的方式,否则无法实现注入。

25、配置文件属性命名

下面属性名都能用于上面的@ConfigurationProperties类:

person.firstName  标准驼峰规则

person.first-name  虚线表示,推荐用于.properties和.yml文件中

PERSON_FIRST_NAME  大写形式,使用系统环境变量时推荐

27、ConfigurationProperties配置可进行属性注释。

28、添加激活配置

eg:当一个应用使用下面的属性,并用 --spring.profiles.active=prod 开关运行,那proddb和prodmq配置也会生效

29、日志输出

默认情况下,Spring Boot只会将日志记录到控制台而不会写进日志文件。如果除了输出到控制台你还想写入到日志文件,那 你需要设置 logging.file 或 logging.path 属性(例如在你的application.properties中)

logging.file  logging.path                示例       描述

(none)      (none)                             只记录到控制台

Specific file  (none)                    my.log     写到特定的日志文件里,名称可以是一个精确的位置或相对于当前目 录

(none)      Specific folder              D:/logs/log  写到特定文件夹下的spring.log里,名称可以是一个精确的位置或相对 于当前目录

**注:**日志文件每达到10M就会被轮换(分割),和控制台一样,默认记录ERROR, WARN和INFO级别的信息。

30、日志级别

  所有支持的日志系统在Spring的Environment(例如在application.properties里)都有通 过'logging.level.*=LEVEL'('LEVEL'是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF中的一个)设置的日志级别。

eg:

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

31、springboot中会根据对应的日志系统加载对应的日志配置文件。如log4j会对应加载log4j.properties

32、springmvc常规处理错误的方式:使用@ ExceptionHandler和@ ControllerAdvice处理

33、自定义内嵌servlet容器:

1. server.port - 进来的HTTP请求的监听端口号
2. server.address - 绑定的接口地址
3. server.sessionTimeout - session超时时间

34、配置DataSource

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.username=dbuser
spring.datasource.password=dbpass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

35、对ActiveQ的支持:

ActiveMQ配置是通过spring.activemq.*中的外部配置来控制的。例如,你可能在application.properties中声明下面的片段:

spring.activemq.broker-url=tcp://192.168.1.210:9876
spring.activemq.user=admin
spring.activemq.password=secret

36、

未完待续。。。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
LeetCode 5561. 获取生成数组中的最大值
文章目录1\.题目2\.解题1\.题目给你一个整数n。按下述规则生成一个长度为n1的数组nums:nums00nums11当2<2i<n时,nums2inumsi
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k