SpringBoot系列(一)

SpringBoot系列

    用了这么长时间的SpringBoot了,最近想写几篇博客记录一下自己的心得。希望能对正在学SpringBoot的博友们,能有些许的帮助。

什么是SpringBoot?

    通俗的来讲,SpringBoot可以说成是Spring的升级版,以更少的配置完成了Spring的功能。它的优势如下:

  1. 简化编码
  2. 简化配置
  3. 简化部署
  4. 简化监控
SpringBoot代码结构

    根据官方文档来说,SpringBoot中不推荐使用default包,也就是不推荐使用默认包,因为它可能会导致@ComponentScan、@EntityScan、@SpringApplication等注解出现一些问题。

@SpringApplication注解应该始终应用在main方法的主类上,并且该类应该放在与controller、dao、service等包同级。据官方提示,@SpringApplication可以实现对同级、同级子包(递归)的注 解和配置扫描,等价于@EnableAutoConfiguration、@Configuration 和@ComponentScan 三个注解。

自动配置

    SpringBoot 能简化配置,很大原因是遵循“约定大于配置”的思想。列如,你的项目中依赖了某一个jar包,SpringBoot会"猜测"你应该是要在项目中使用这个jar中的类,因此会自动帮你配置这个jar中的bean。你只需要在启动类上添加@EnableAutoConfiguration注解,表示你希望SpringBoot开启自动配置功能。

@EnableAutoConfiguration注解

    刚才有讲到过,@EnableAutoConfiguration注解是表示你希望SpringBoot开启自动配置功能。那我们自己写的jar文件如何加入这个注解呢?打开 SpringBoot 自动配置的 jar 包中 spring.factories 文件可以看到默认支持 自动配置的框架、类库等,如下:
在这里插入图片描述
使用了@EnableAutoConfiguration 注解后,等于打开了 SpringBoot“按依赖的 jar 帮你自 动配置 Bean”的开关。如果自己开发的 jar 需要自动配置,只需在你的项目的 META-INF 目 录也提供一个 spring.factories 文件,参考官方配置即可。

第一个SpringBoot

在此过程中,我们使用IDEA来完成第一个SpringBoot项目。

1.打开IDEA,创建一个新项目,这里我们选择Spring Initializr,SpringBoot要求JDK在1.8以上,所以我们选择JDK1.8。Choose Initializer Service URL 选择 Default:http://start.spring.io。创建好之后就下一步
在这里插入图片描述
2.在下图填写相关的项目信息
在这里插入图片描述
点击 Next 后,出现下图所示的界面。
在这里插入图片描述
然后再设置一下存放目录,与项目名称,点击Finish,就完成了SpringBoot的创建
3.项目创建完成后会自动生成很多文件,其中有一个…Application的文件是用于启动SpringBoot项目的,其中有一个main方法,我们指导main方法是程序的入口,我们可以右键Run '…Application’来运行程序。

main方法所在路径:com/text/springboot/…Application

Pom.xml中的依赖介绍

    我们打开pom.xml文件,找到parent节点,SpringBoot项目默认继承了spring-boot-starter-parent项目,按住 Ctrl 键,点击进去,然后可以看到继承了 spring-boot-dependencies,再按住 Ctrl 键,点击进入,这时找 properties 与 dependencies 节 点,可以看到很多我们熟悉的框架 jar 包。
    另外,pom.xml文件中还有三个默认模块:

  1. spring-boot-starter-web:Spring Boot Web 项目的核心模块;
  2. spring-boot-starter-thymeleaf:SpringBoot 的视图模块,让 SpringBoot 支持 html 视图。 注意:SpringBoot 项目默认不支持 jsp,只支持 html。
  3. spring-boot-starter-test:测试模块,包括 JUnit、Hamcrest、Mockito。

Spring Boot 自动配置原理是什么?

使用@SpringBootApplication 注解标注主配置类,最主要的功能就是 SpringBoot 开启了 一个@EnableAutoConfiguration 注解的自动配置功能。
@EnableAutoConfiguration下两个重要注解:@AutoConfigurationPackage、@Import

@SpringBootApplication

    使用@SpringBootApplication标注的类是SpringBoot项目的主配置类(主程序类)。用于启动SpringBoot项目。我们可以查看它的源码,在其中可以看到两个注解,分别是@SpringBootConfiguration、@EnableAutoConfiguration。

@SpringBootConfiguration注解

我们再进入@SpringBootConfiguration,里面包含@Configuration注解,使用@Configuration注解的类就是一个配置类,它具有 xml 配置文件 的所有功能,用它来代替 xml 配置文件,并且会把这个配置类纳入到 Spring 容器中.

@EnableAutoConfiguration注解

    像以前的方式,使用Spring的时候,我们需要去编写很多的配置文件,而SpringBoot却没让我们编写过任何的配置文件,原因就在于这个@EnableAutoConfiguration注解。

@EnableAutoConfiguration注解使得 SpringBoot 可以实现自动配置(原则是约定优于配 置),那具体是如何让 SpringBoot 实现自动配置的呢?我们可以查看它的源码

我们会发现@EnableAutoConfiguration 注解中又包含一大堆的其他注解,其中有两个比 较重要的注解,分别是@AutoConfigurationPackage、@Import。

@AutoConfigurationPackage实现了自动扫描。
@Import则是将所有第三方依赖采用自动配置的方式导入进项目当中。

配置文件格式及使用

    SpringBoot提供了两种默认认的全局配置文件分别是:application.properties 和 application.yml,两种格式的配置效果相同,风格各异,按个人喜好二选一即可。下面主要 以 properties 格式的配置为例。

application.properties

    普通配置。application.properties 文件中数据的存储格式为 key-value。如 server.port=8011,这里的 key 为 server.port,value 为 8011。

常用系统配置属性

Server常用的配置(Tomcat的相关信息)

server.port 服务器端口
server.servlet.context-path 应用上下文路径
server.tomcat.uri-encoding=UTF-8 读取属性配置文件,项目文件编码成功设置,页面还乱码时候设置

DataSource 常用的配置

spring.datasource.username ----数据库的登录用户名。
spring.datasource.password —数据库的登录密码。
spring.datasource.url ----数据库的 JDBC URL。
spring.datasource.driver-class-name ----JDBC 驱动的全限定类名。默认根据 URL 自动检测。
spring.datasource.name —数据源的名称。
spring.datasource.pool-name ----连接池名称。
spring.datasource.max-active ----连接池中的最大活跃连接数。
spring.datasource.connection-timeout ----连接超时(单位毫秒)
spring.datasource.max-idle -----连接池中的最大空闲连接数。

Tomcat 常用的配置

server.tomcat.accesslog.directory ----创建日志文件的目
server.tomcat.accesslog.enabled ---------是否开启访问日志(默认:false) server.tomcat.accesslog.pattern ---------访问日志的格式(默认 common) server.tomcat.accesslog.prefix ---------日志名前缀(默认:access_log)
server.tomcat.accesslog.suffix ---------日志名后缀(默认:.log)
server.tomcat.max-http-header-sizeHttp ---------消息头最大字节数(默认:0)
server.tomcat.uri-encoding ---------用来解码 URI 的字符编码

Redis 常用的配置

spring.redis.database ----连接工厂使用的数据库索引。(默认值: 0 。) spring.redis.host ----Redis 服务器主机地址。(默认值: localhost 。)
spring.redis.password ----Redis 服务器的登录密码。
spring.redis.port ----Redis 服务器端口。(默认值: 6379 。)
spring.redis.timeout ----连接超时时间,单位为秒。(默认值: 0 。) spring.redis.pool.max-active —连接池在指定时间里能分配的最大连接数。负数表示无限制。默认值: 8
spring.redis.pool.max-idle —连接池里的最大空闲连接数。负数表示空闲连接数可以是无限大。默认值:8

自定义配置属性

    自定义属性配置
        在application.properties文件中添加我们自定义的属性:

spring.greet=hi.hello

然后在你需要赋值的属性上添加一个@Value注解,注解里是占位符引用属性文件中属性

@Value("${spring.greet}")
private String greet;

这样,我们就能拿到配置文件中的值

配置变量的引用

    在application.properties文件中添加自定义属性配置,在当前配置文件中的其他地址引用。
如在application.properties文件中添加如下代码。

spring.msg=hi.hello
spring.greet=kublic博客问候大家:${spring.msg}
随机值变量

    在properties文件中也可以给随机值

spring.number=${random.int}
spring.msg=hi.hello
spring.greet=kublic博客问候大家:${spring.msg},${random.int}
@PropertySource 注解

    @PropertySource注解的存在就是为了你的数据不在application.properties配置文件中,而是在另一个properties配置文件中,那么在这种情况下,SpringBoot是无法读取这个配置文件中的值的,这个时候,我们就需要这个注解去声明一下:

@PropertySource("classpath:xxxx.properties")

还有另一种的配置文件是yml,不过yml书写规范比较严格,但是功能和properties都几乎差不多,如果有博友比较喜欢yml风格,可以自行百度,这里只演示properties配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值