Sping_Boot(1)

微服务的概念:
1.一个项目可以由多个小型服务构成(微服务)
2.使用spring cloud 进行合并
3.并行计算

Spring boot可以开发微服务模块
a.简化j2ee开发
b.整个spring 技术栈的整合(整合springmvc spring)
c.整个j2ee技术的整合(整合mybatis redis)
准备:
jdk:
JAVA_HOME:jdk根目录
path:jdk根目录\bin
classpath:.;jdk根目录\lib
maven:
MAVEN_HOME:maven根目录
path:maven根目录\bin
配置Maven本地仓库: mvb根目录/conf/setting.xml文件中的

@springBootConfigration: 包含@Configruraation,表示“配置类”:
1.该类是一个配置类
2.加了@Configuration注解的类,会自动
@Configuration
public class A //表示A是一个用于配置的类
{
@EnableAutoConfiguration:使spring boot 可以自动配置:可以找到@SpringBootAppilcation所在类的包,springboot在启动时,会根据META-INF/spring.factories找到相应的三方依赖,并将这些依赖引入本项目。
}
总结:编写项目时,一般对自己写的代码和三方依赖进行配置,但springboot可以自动进行配置,自己写的代码,通过@SpringBootConfiguration自动帮我们配置;
spring-boot-autoconfigure-2.0.3RELEASE.jar中的META-INF/spring.factories进行自动配置
自己写的代码,spring boot通过@SpringBootConfiguration自动帮我们配置:
引入三方依赖(jar、配置) 通过spring-boot-autoconfigure-2.0.3RELEASE.jar中
的META-INF/spring.factories进行声明,然后通过@EnableAutoConfiguration开启使用即可spring-boot-autoconfigure-2.0.3RELEASE.jar包中包含了J2EE整合体系中需要的依赖.
c.如何自动装配:
研究org.springframework.boot.autoconfigure.web.servlet.HttpEncondingAutoConfiguration通过观察该源码发现:
@Configuration:标识此类是一个配置类,将此类纳入springIoc容器
@EnableConfiurationProperties(HttpEncodingProperties.class):
通过HttpEncodingProperties将编码设置为 UTF-8(即自动装配为UTF-8,如何修改该编码:通过该Properties文件的prefix+属性名进行修改[配置文件中,yml/properties])
即:该注解给了默认编码UTF8,并且提供了prefix加属性名的方式供修改编码
配置文件:
作用:spring boot自动配置(约定8080),可以使用配置文件 对默认的配置进行修改
默认全局配置文件:
application.properties:k=v
application.yml :yml isn't a mark language,不是一个标记文档
yml的写法 k:空格V, 通过垂直对齐指定层次关系
server:
port: 8882
xml:是一个标记文档
8882

    path:/a/b/c
    通过yml给对象注入值:
    @Component 将此Javabean  
    @ConfigurationProperties(prefix="student")
    public class Student
    

绑定@ConfigurationProperties(yml/properties)            @Value("xx")二者可以互补
                              @ConfigurationProperties                                            @Value
注值                                     批量注入                                                           单个
松散语法                              支持                                                                 不支持
SpEL                                不支持                                                                 支持
JSR303数据校验             支持                                                                      不支持
注入复杂类型                   支持(8个基本类型/String/Date)                      不支持

@PropertySource:默认会加载application.properties/application.yml文件中的数据
例如@PropertySource(Value={“classpath:conf.properties”})加载conf.properties文件中的数据;
但是,@PropertySource只能加载properties,不能加载yml
   
@importResource
  Spring boot自动装配/自动配置
   Spring等配置文件  默认会被Spring boot自动给配置好
如果要自己编写spring等配置文件,spring boot能否识别?默认不识别 如果需要,通过@ImportResource指定配置文件路径
但是不推荐手写spring配置文件
配置:xml配置文件,通过注解配置
spring boot推荐使用注解方式进行配置:写类@Configuration @Bean

spring boot中全局配置文件中的 占位符表达式
a.随机数${random.uuid}等
b.引用变量值
        yml中:
        student:
                    name:${student.user.name}
    实际引用的是properties中的student.user.name=zh
    yml中:
    student:
                name:${student.user.name:zh}
多环境切换(profile)
    a.properties
    默认springboot会读取application.properties环境
    多个;
    applicaiton-环境名.properties
    application-dev.properties 8883
    application-test.properties 8884
如果要选择某一个具体的环境:application.properties中指定:spring.profiles.active=环境名
如果将application.properties注释掉,spring boot仍然会读取其他application-环境名.properties中的配置,并且properties中优先级高于其他
b.yml文件中配置多个环境:
server:
    port:8883
spring:
    profiles:
            active:dev 指定本次采用的环境
第二个环境:
---
    server:
            port: 8884
c.动态切换环境:
    1.运行参数指定环境(STS:Run configuration中的Argument-programargument):
        --spring.profiles.active=dev
    2.命令行方式:
    java-jar项目名.jar--spring.profiles.active=环境名
    3.通过vm参数指定环境:
            STS:Run Configuration -Argument -VM
            -DSpring.profiles.active=环境名
  配置文件的位置:
    properties和yml中的配置,相互补充;如果冲突则properties的优先级高
    spring boot默认能读取的东西:application.properties/application.yml,这两个文件的位置可存在于
    file:/项目根目录/config    application.properties
    file:项目根目录               application.properties
    classpath:项目根目录/config            application.properties
    classpath:项目根目录                       application.properties
a.如果某项配置冲突,则优先级从上往下
b.如果不冲突,则互补结合使用
配置项目名:
properties文件中
server.servlet.context-path=/boot
b.项目外部的配置文件:
在项目Run.configuration,arguments:
--spring.config.location=文件路径
如果同一个配置同时存在于内部配置文件,和外部配置文件,则外部>内部
HW.jar运行  8881--->8882
外部配置文件,不需要再次修改内部配置文件,可在原jar包配置基础上直接调用
通过命令行调用外部配置文件
java -jar 项目.jar  --spring.config.location=D:/application.properties

第三种方式:项目运行参数(补救):
 在项目Run configuration,arguments:
   --server.port=8883
多个地方配置时,如果冲突,优先级:
命令行参数(调用外部的配置文件>运行参数)>内部文件(properties)>yml
日志:
日志框架 UCL JUL jboss-logging,logback,log4j,log4j2,slf4j...
spring boot默认选用slf4j,logback
spring boot默认配置好日志,直接使用即可
日志级别:
       TRACE<DEBUG<INFO<WARN<ERRPR<FINAL<OFF
自定义日志级别:
springboot默认的日志级别是info(即只打印info及之后级别的信息);也可以自定义级别:全局配置文件中
logging.level.com.demo(主配置类所在包)=warn(日志打印级别)
可以通过配置将日志信息存储到文件中logging.file=springboot.log 存储到了项目的根目录中的springboot.log
也可以指定具体的日志路径:logging.file=D:/springboot.log
也可以存储到一个文件夹中,logging.path=D:/log/.并且默认的文件名是spring.log
指定日志显示格式:
    a.日志显示在consoles中
            logging.pattern.console=%d{yyyy-MM-dd}[%thread]%-5level %logger{50} -%msg-%n
                                                    %d:日期时间
                                                    %thread:线程名
                                                    %-5level:显示日志级别,-5表示从左显示5个字符宽度
                                                    %logger{50}:设置日志长度
                                                    %msg:日志消息
                                                    %n:回车
    b.日志显示在文件中:logging.pattern.file=%d{yyyy-MM-dd}[%thread]%-5level %logger{50} -%msg-%n
                                               同上
    
    Springboot开发web项目(静态资源html css js)
            new -spring starter -设置(选择需要的场景,web)
            spring boot是一个jar,因此 静态资源就不是再存到webapps中,存放在哪里?
            静态资源的存放路径通过WebMvcAutoConfiguration类 --addResourceHandlers()指定:/webjars/
            spring boot将静态资源存入到jar包中,引入:从jar目录结构 的webjars开始写:http://localhost:8080/webjars/
            如何自己写静态资源,如何放到soring boot中?将自己写的静态资源--->jar,同上(不推荐);
             推荐:
            spring boot约定:spring boot将一些牧流资源存放目录,将静态资源直接放入这些目录
             在类中的"CLASSPATH:/META-INF/resources/"
    网站中 网页的标签的logo是固定的名字:favicon.ico
    自定义 favicon.ico:阅读源码可知:只需要将favicon.ico文件放入任意静态资源目录中即可
    总结:
    1.通过源码发现静态资源的目录
    2.用静态资源:只需要将静态资源放入以上目录即可
    3.其他特定的文件(欢迎页、ico),只需要根据约定(index.html favicon.ico)放入该静态资源目录
如何自定义静态资源目录(Properties文件中的prefix+属性):
    spring.resources.static-locations=classpath:/res/,classpath:/img/
以上就将静态资源目录设置为了classpath:/res/,classpath:/img/,注意自定义静态资源目录后
动态资源:JSP(springboot默认不支持JSP):
    推荐:模板引擎:(模板+数据)
    网页=模板+数据
引入thymeleaf:
到springboot官网复制thymeleaf的依赖
使用thymeleaf:
    ThymeleafAutoConfiguration、
   属性值修改: XxProperties
   使用thymeleaf只需要将文件放入目录:“classpath:/templates/”;文件的后缀:".html";
th就是替换html原有的值
th:text    获取文本值        <h1>hello<h1>  将hello渲染为h1后的效果
th:utext    获取文本值(不转义)    显示 <h1>hello<h1>


Spring boot 整合JSP开发:
之前springboot默认 自带一个内置的tomcat,不需要打war包,直接通过jar即可运行
但是,如果要整合jsp开发,就需要单独配置一个外置的tomcat,需要打war包
1.新建SpringBoot项目,war
    注意:
    <dependency>
                           <group>org.springframework.boot</groupId>
                           <artifactId>spring-boot-starter-tomcat</artifactId>
                            <scope>provided</scope>
<dependency>
                        provided:意思是将项目打包时,不需要讲内置的tomcat一起打包
2.建立基本的项目所需要的目录结构
    webapps/WEB-INF        (需要)
    webapps/WEB-INF/web.xml  (不需要)
3.创建一个tomcat实例,并部署项目
    如果是一个war包的整合的springboot项目,在启动服务器tomcat时,会自动调用ServletInitializer类中的configure方***调用springboot的主配置类
在启动tomcat服务器时 1.会启动tomcat服务器 2.通过configure方法启动springboot的主配置类







全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务