SpringBoot详解

SpringBoot详解

微服务概念:
微服务是将单个模块分配到不同的服务器上,来减少服务之间的耦合,通过http协议将不同模块联系起来。单个模块的更新提高很少影响其他模块。
简化java开发,整合Spring技术栈的整合,整合整个j2ee的技术。

自动配置的原则:约定大于配置
  1. 可以以jar包的形式独立运行,运行一个SpringBoot项目只需要通过java -jar xx.jar来运行。
  2. 2.内嵌Servlet容器,SpringBoot可以选择Tomcat,Jetty或者Undertow。这样我们无须以war包形式部署项目。
  3. 3.简化Maven配置,SpringBoot提供了一系列的start pom来简化Maven的依赖加载。
  4. SpringBoot会根据在类路径中的jar包,类,为jar包中的类自动配置Bean。这样就几大的减少了我们要使用的配置。
  5. SpringBoot提供了基于http,ssh,telnet对运行时的项目进行监控。
  6. 不借助与代码生成实现,而是通过条件注解来实现,而是通过条件注解来实现,这也是Spring4.x的新特性,不需要任何的xml配置即可实现Spring的所有配置。
全局配置文件(特别注意里边的层级关系,冒号和后边的具体配置要有空格)

不想使用SpringBoot的自动配置的话用全局配置文件。
全局配置文件的名字必须叫:application.properties或者application.yml(数据为中心的语言具有面向对象的特征),通常会放到类路径下的/comfig或者resources(推荐)
两者的书写区别是前者是直接 左边是需要配置的=配置的内容,而yml文件是需要配置的+冒号换行+冒号+空格+配置的内容。
在这里插入图片描述
上边这个是properties的配置书写
在这里插入图片描述
上边这个是yml的配置书写

application.yml或者是application.properties,一般放在项目的跟目录下(跟dao、controller一个层级)。
yml的具体配置如下(部分):
SpringBoot详解_第1张图片
port:端口号配置,
jsp:页面的热部署等。
SpringBoot详解_第2张图片
Spring的部分配置:

prefix: /
suffix: .jsp
上边这两个是设置返回视图的默认前缀和后缀。

servlet:
multipart:
max-file-size: 2MB
max-request-size: 2MB
上边这三个的意思是:配置最大上传下载的大小

datasource:
password: xxxx
username: xxxx
url: jdbc:mysql://127.0.0.1:8989/aaaa?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
这是设置mysql的连接:数据库的用户名和密码,数据库的路径,还有驱动。

jackson:
date-format: yyyy/MM/dd HH:mm:ss
配置jackson的年与日日的格式

mybatis:
mapper-locations: classpath:/com/aaaa/aaaa/dao/*DaoMapper.xml
type-aliases-package: com.aaaa.aaaa.entity
配置mybatis的xml的映射包和需要映射的实体类的路径和包名。

logging:
level:
root: debug
com.aaaa.aaaa.service: debug
com.aaaa.aaaa.dao: debug
配置项目的debug的级别和包。

SpringBoot的入口类

@SpringBootApplication
@MapperScan(“com.XiangMu.Test.dao”)
public class Application {

public static void main(String[] args) {
    SpringApplication.run(Application.class,args);
}

}

@SpringBootApplication声明是SpringBoot的入口。
对应的是三个注解:

1.@Configuration

从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器

下边是常用的其它注解不属于三个注解的
@Bean
用来代替 XML 配置文件里面的 配置。

@ImportResource
如果有些通过类的注册方式配置不了的,可以通过这个注解引入额外的 XML 配置文件,有些老的配置文件无法通过 @Configuration 方式配置的非常管用。

@Import
用来引入额外的一个或者多个 @Configuration 修饰的配置文件类。

@SpringBootConfiguration

这个注解就是 @Configuration 注解的变体,只是用来修饰是 Spring Boot 配置而已,或者可利于 Spring Boot 后续的扩展,源码如下。

这是 Spring 3.1 添加的一个注解,用来代替配置文件中的 component-scan 配置,开启组件扫描,即自动扫描包路径下的 @Component 注解进行注册 bean 实例到 context 中。
另外,@ComponentScans 是可重复注解,即可以配置多个,用来配置注册不同的子包。

@EnableAutoConfiguration

看全路径就知道,这是自 Spring Boot 诞生时添加的注解,用来提供自动配置,上面的两个都是 spring-context 包下的,不属于 Spring Boot,所以 Spring 3.0 之后的去 XML 配置方式已经为 Spring Boot 埋下了伏笔!

@MapperScan 指定通过使用@MapperScan可以指定要扫描的Mapper类的包的路径

如何修改SpringBoot的打印图案。

SpringBoot详解_第3张图片
打开网址:
http://patorjk.com/software/taag/#p=display&h=3&v=3&f=4Max&t=qf%20Spring%20Boot
如下:
SpringBoot详解_第4张图片
1是显示的效果选择。
2是选择显示什么的 SpringBoot的话不用动
3.生成的效果。

将生成的效果复制下来放到文本文件中(文件的名字叫banner.txt)-------》保存(也可以改)--------》放到SpringBoot工程下边的resources文件下
(注:这个没什么实用性,不建议经常改或者改成特别复杂炫酷的。)

关于SpringBoot的配置文件问题?

关于SpringBoot的配置文件有两种:
1.application.yml (具体的配置细节在本人的其它文件中也有提到)
2.application.propertise

里边的具体配置差不多
一种是K+冒号+空格+V yml的配置
一种是K+点+。。。+等号+V propertise的配置

问题一:配置名是否必须是application

本人觉得答案是肯定的,是必须一样的,但是在特殊情况下是不一样的,如下:

1.如果一个文件有多个配置文件时是不一样的。
如:一个项目中有三个配置文件,一个是平时做的时候用的,一个是测试用的,一个是上线用的,那么配置文件中就有一个主配置文件用来指定用哪个配置文件,和其它的配置文件。
在application.yml的配置文件中配置现在项目使用哪个配置文件。
Spring:
profiles:
active: abc
其中abc就是另外一个配置文件的名字 application-abc.yml。当然也可以有application-bcd.yml等多个配置文件,在这些子配置文件中是正常的使用配置。

2.如果项目中使用配置中心的配置来做的话配置的文件的名字也是不一样的。
如果使用配置中心开发项目,则配置文件要用bootstrap.yml的文件来管理。在这个配置文件里需要配置:

1)开启配置中心spring.cloud.config=true (这里为了书写方便暂时使用propertise后缀的方式书写以及之下所书写的)。
2)设置配置中心的服务名spring.cloud.config.distormery.service-id=配置中心的服务名。
3)本服务的名字、制定环境、指定分支(默认是主分支)、指定配置的uri地址(使用的是码云上的https的地址,不用那个有公钥私钥的ssh类型的)。

使用application和bootstrap的区别。

application配置文件是加载配置文件、创建对象用的,而配置中心在向码云上请求配置中心时还没有创建对象,也就用不了application的名字了,所以要用bootstrap的名字来使用,bootstrap的名字做配置文件名是在创建对象之前执行的,通过bootstrap来加载application的配置文件。

未完待续。。。。。

你可能感兴趣的:(SpringBoot详解)