pom.xml依赖
param父项目启动器依赖了一个dependenci里面定时了所有依赖管理,及各种依赖的jar版本
导出一个可运行的jar 需要配置maven插件,里面会再lib里面引入tomcat相关的jar
springboot 抽取出很多所谓启动器的jar依赖,如果需要使用某些功能,就需要引入这些对于功能的启动jar依赖
springweb相关的启动器 jar
里面就有springmvc, josn转成之类的 jar
自动配置注解(重要)
@EnableAutoConfiguration
1.SpringFactoriesLoader.loadFactoryNames() 扫描jar路径下的所有 META-INF/spring.factories
spring.factories 也可以用来加载外部类或者组件
3.再从prpperties中获取到EnableAutoConfiguration.class类对应的所有值,添加进容器中给容器管理
4.而EnableAutoConfiguration 加载的大量的自动配置类 都是XXXXautoConfigXX之类的我们需要的功能一定要有相关的自动配置类
举例:这些类都@Configuration @bean修饰了 也就是说他们会去加载进容器
并且里面有注解@enableConfigrationProperties 去加载一些配置,然后通过构造的方式去获取Properties的值,也就是我们springBoot配置的值,就可以给这些自动装配类配置我们想配置的参数,在application.properties中,不配就使用默认的了
细节:@conditional相关注解 是用来判断是否满足条件,满足条件才将改对象bean注入到容器,也就是说,并不是所有的自动装配类都会去装配相关对象,因为可能不满足条件
那如何确定自动配置类生效?
通过在配置文件中配置 debug=true 就可以再控制台看到相关启动类加载日志
@Configuration 和 @Component 区别
Component 没有代理,会直接在容器中创建一个新的bean对象
Configuration 被CGlib代理 保证容器对象的唯一性,如果容器存在改对象就不会创建,@Configuration注解中是包含@Component注解的
@ImportRource
导入配置文件到容器中,也就是读取xml之类的配置文件
springboot推荐方式:使用配置类@Configuration @bean给容器添加对象
@ConfigurationProperties(prefix = "redis")
作用在类上,用于注入Bean属性,然后再通过当前Bean获取注入值:
激活指定:profile 可以用来配置不同环境不同配置参数,适用于多环境部署
application.properties 可以配置多个,并且高优先级覆盖低优先级,也可以组合生效 config文件下是高优先级
日志
logback-spring.xml
由SpringBoot加载,可以配置springProfile 来定义不同环境打印不同的日志
需要用什么类型的日志框架,就引入相关jar包和加入相关配置文件即可
springboot web开发
自动配置原理
自动配置注解(重要)
@EnableAutoConfiguration
1.SpringFactoriesLoader.loadFactoryNames() 扫描jar路径下的所有 META-INF/spring.factories
spring.factories 也可以用来加载外部类或者组件
3.再从prpperties中获取到EnableAutoConfiguration.class类对应的所有值,添加进容器中给容器管理
4.而EnableAutoConfiguration 加载的大量的自动配置类 都是XXXXautoConfigXX之类的我们需要的功能一定要有相关的自动配置类
举例:这些类都@Configuration @bean修饰了 也就是说他们会去加载进容器
并且里面有注解@enableConfigrationProperties 去加载一些配置,然后通过构造的方式去获取Properties的值,也就是我们springBoot配置的值,就可以给这些自动装配类配置我们想配置的参数,在application.properties中,不配就使用默认的了
细节:@conditional相关注解 是用来判断是否满足条件,满足条件才将改对象bean注入到容器,也就是说,并不是所有的自动装配类都会去装配相关对象,因为可能不满足条件
那如何确定自动配置类生效?
通过在配置文件中配置 debug=true 就可以再控制台看到相关启动类加载日志
静态资源合并
webMvcAutoConfiguration启动器中注册了handel类会去加载配置好的路径
classpath:/resource/ ,classpath:/static/ classpath:/public/下都可以访问到
如何修改springBoot默认配置
1.根据@EnableAutoConfiguration自动配置注解了解到,进行bean注册的类上都有个@ConditionalOnMissingBean 判断容器里面是否有,如果有,就不去加载注册,也就是说,我们可以自己配置一个一样的,那自动配置start就不会就加载默认的(缺点:不能保存默认配置)
2.通过实现某个自动配置类中的某些配置类,然后重写相关方法即可,当然需要@Configuration 修饰 要注册到容器(意思:自动注册启动器会去注册一些类,而你要取重新需要改动的类的方法,然后再重新注册到容器中)
继承webMvcConfigurationAdapter类型 进行扩展重写 addXXXX
3.如果加载@enableMvcConfiguration 是全面接管,会导致默认的自动配置全部失效
MessageSource类 实现国际化
根据请求头带进来的区域信息 cn,us 来获取不同配置文件值返回显示
自定义注册servlet,Filter,Interice之类的 都有一个类叫什么 xxxRegistrationBean 之类的 @bean注册即可以用 这些都会让你传入你写的myServlet 或者MyFiLter