http://tengj.top/2017/04/24/springboot0/
配置文件 https://segmentfault.com/a/1190000004309751
spring boot一点一点的总结:
1.CommandLineRunner:Spring Boot 启动加载数据
2.WebMvcAutoConfiguration: 静态资源处理
为了控制WebMVC。需要在@Configuration注解的配置类上添加@EnableWebMvc(@SpringBootApplication
注解的程序入口类已经包含@Configuration),添加注解后WebMvcAutoConfiguration中的配置就不会生效
默认的资源映射: #http://blog.csdn.net/catoop/article/details/50501706
其中默认配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources)
其中默认配置的 /webjars/** 映射到 classpath:/META-INF/resources/webjars/
PS:上面的 static、public、resources 等目录都在 classpath: 下面(如 src/main/resources/static)。
当我们访问地址 http://localhost:8080/fengjing.jpg 的时候,显示哪张图片?
这里博主可以直接告诉大家,优先级顺序为:META/resources > resources > static > public
3.自定义资源映射:
/myres/* 映射到 classpath:/myres/* 为例
3-1.自定义目录:实现类继承WebMvcConfigurerAdapter 并重写方法addResourceHandlers
3-2.使用外部目录:
3-3.通过配置文件:
spring.mvc.static-path-pattern 可以重新定义pattren ,注意 spring.mvc.static-path-pattern 只可以定义一个,目前不支持多个逗号分割的方式。
spring.resources.static-locations 可以重新定义pattern所指向的路径
4.webjars就是将js, css 等资源文件放到 classpath:/META-INF/resources/webjars/ 中,然后打包成jar 发布到maven仓库中。
5.版本号统一管理
6.静态资源版本管理
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
7.WebApplicationInitializer 相当于web.xml
8.WebMvcConfigurerAdapter springBoot这个类的作用是进行SpringMVC的一些配置
9.springMVC继承HandlerInterceptorAdapter类
10.Spring boot 的主 Servlet 为 DispatcherServlet,其默认的url-pattern为“/”
spring boot 需要Servlet,Filter,Listener,Interceptor的时候
10-1在spring boot 上使用@ServletComponentScan注解后。Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,无需其他代码。
10-2 不需要@ServletComponentScan注解,直接用代码配置ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegisterBean 控制,也可以实现ServletContextInitalizer
注意:WebApplicationInitializer 和ServletContextInitializer
WebApplicationInitializer取代SpringMvc的web.xml
11.spring boot 不推荐使用JSP ,想使用JSP需要配置application.properties
12.@ConfigurationProperties
@ConditionOnClass表明该@Configuration仅仅在一定条件下才会被加载
@EnableConfigurationProperties将Spring Boot的配置文件(application.properties)中的spring.data.mongodb.*属性映射为MongoProperties
并注入到MongoAutoConfiguration中
@ConditionalOnMissingBean说明Spring Boot仅仅在当前上下文中不存在Mongo对象时,才会实例化一个Bean。这个逻辑也体现了Spring Boot的另外一个特性——自定义的Bean优先于框架的默认配置,
我们如果显式的在业务代码中定义了一个Mongo对象,那么Spring Boot就不再创建
#http://blog.csdn.net/elim168/article/details/78056446
spring自定义注解
1.BeanDefinitionRegistryPostProcessor 是BeanFactoryPostProcessor的扩展。
BeanFactoryPostProcessor的作用是用来进一步定义注册BeanDefinition,IOC容器的本职是
Bean的管理,所以BeanFactoryProcessor 本身也是Bean,要对BeanFactoryPostProcessor的BeanDefinition
进一步定义就通过BeanDefinitionRegistryPostProcessor进行注册,BeanDefinitionRegistryPostProcessor及其子类是Ioc容器最实例化的一类Bea。
BeanDefinitionRegistryPostProcessor可以让我们实现自定义的注册bean定义的逻辑。。。
2.在使用自定义的BeanDefinitionRegistryPostProcessor来添加自定义的bean定义时可以配合
ClassPathScanningCandidateComponentProvider一起使用,扫描指定包及其子包下面拥有指定注解的类...
ClassPathScanningCandidateComponentProvider扫描指定包及其子包下面拥有指定注解的类(自定义注解)。。。
ClassPathScanningCandidateComponentProvider扫描指定包及其子包下面能赋值给指定Class的Class。。。。。。。
(注意:AnnotationTypeFilter,considerMetaAnnotations,considerInterfaces,Inherited,AssignableTypeFilter)
但是目标类上的某个注解上加上了指定的注解则该类也将匹配
3.BeanPostProcessorss
4.spring boot中实现接口 EnvironmentAware 重写方法 setEnvironment
可以在工程启动时,获取到系统环境变量和application配置文件中的变量。
一.Bean的生命周期
InitialingBean和DisposableBean这个是对某一个Bean控制其初始化的操作
BeanNameAware、ApplicationContextAware和BeanFactoryAware
BeanPostProcessor是对所有的beanBean的生成前后做一些逻辑操作
BeanFactoryPostProcessor
InstantiationAwareBeanPostProcessor