springboot2

1.@RestController = @ResponseBody + @Controller
2.ApplicationContext = IOC容器
3.自动配置:引入依赖之后必须进行配置之后才会有相关组件,springboot在引入场景启动器之后自动配置将相关组件加入到ioc容器之中。引入一个场景启动器,springboot会自动加载该场景下所有的配置项,比如引入starter-web,会自动加载web场景下的配置项,不会加载其他例如redis的配置项,总结一句话就是按需加载所有配置项。
4.SpringBootApplication = @SpringBootConfiguration + @ComponentScan +@EnableAutoConfiguration
5.springBoot只会有一个配置文件叫做application.properties,配置文件中配置的每一项都会映射到某一个类中,io容器内部会有这些类的实例。
6.向ioc容器中添加bean的方式:@Configuration和@Bean搭配使用,可以向ioc容器中加入bean,@Bean修饰的方法的返回值为添加的bean。springboot2在@Configuration增加了一个新的属性:proxyBeanMethods,默认为true,表示full模式,bean之间相互依赖时,会优先加载使用ioc容器中已经存在的bean,不会重新创建。false为lite模式,在注入的bean之间没有依赖关系时,可以设置为false,构建bean的时候不会判断ioc容器中是否已经有了需要的类型的bean,容器启动变快。
7.向ioc容器中添加bean的方式:@Import注解:作用在类上,且这些类所对应的对象在ioc容器里面。默认注入bean的名称为该bean所对应Java文件的全类名。
8.@Conditional:是一个根注解,它有许多儿子,例如@ConditionalOnBean、@ConditionalOnMissingBean。举个例子:当容器中没有Pet这个bean的时候,就不向容器中添加User这个Bean,这个可以添加在配置类上或者方法上(这些方法被@Bean注解标识)。
9.@ImportResource:在SpringBoot项目中默认只有一个配置文件,就是application.properties,即使你新建了一个xml文件,里面配置了一些bean,但是项目没有加载这个配置文件,所以这个文件里面的bean依然获取不到。当spring项目升级为springboot项目时,可以传统项目还是使用xml文件方式配置bean,要是使用配置类添加方法,再使用@Bean注解修饰这些新添加的方法特别麻烦,就可以使用@ImportResource注解,用在配置类上面。
10.读取配置文件application.properties中的属性:有一个前提,就是读取配置文件属性的这个目标类的对象必须在ioc容器之中所以读取配置文件就有两种方式。方式一:@Component+@ConfigureProperties(prefix="")。方式二:@ConfigureProperties + @EnableConfigurationProperties(注入的bean对应类的Class),这个注解是使用在配置类上,也就是使用@Configuration修饰的类。也可以使用@Value()Environment使@Autowire使getProperties使{属性名})来获取,也可以在类中声明一个Environment类型的成员变量,然后使用@Autowire自动注入,之后就可以在方法里面使用这个成员变量的getProperties()方法来获取配置文件中的配置值。 在配置文件中也可以使用{}来引用之前的配置项。 11.@PathVariable:restFUl风格、@RequestParam路径之后?后面的参数
12.自动配置的原理:首先是一个复合注解:第一个标识是一个配置类,里面的属性proxyBeanMethods,牵扯到lite模式和Full模式。第二个注解为开启自动配置,底层为两个import注解,第一个import注解时扫描主程序所在包的名字,然后注册这个包下及其子包下面的bean,第二个就是自动寻找项目中所有meta-inf/spring.factories里面的自动配置类的名字,每个名字都对应一个配置类,有些配置类通过@EnableConfigurationProperties(xxxProperties.class)以及在这个class上面使用@ConfigureProperties(prefix="")读取配置文件的内容。每个配置类里面的所有bean是按照@Conditional的派生注解根据属性文件,有无相应的class,ioc容器中 有无相应的bean等等来判断是否需要加载bean。文件上传解析器进行了为这个bean进行了改名,以及@ConditionalOnMissingBean()的作用,可以优先使用程序员自定义的bean,程序员也可去修改application.properties文件里面的内容,实现bean的自定义,第三个为过滤扫描自定义的一些bean。

13.@Slf4j作用在类上,为这个类添加了一个属性log,可以在这个类的方法里面使用log.info("")打印日志。
14.devtools

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

ctrl+f9重启项目。
15.静态资源:静态资源放在类路径下的static、public、resources、META-INF/resources,浏览器访问这些资源:项目根路径/ + 静态资源名。可以设置静态资源访问前缀spring.mvc.static-path-pattern:/**。
16. 配置文件可以存在四个地方,优先级顺序从高到低依次为:①:项目的config文件夹下的配置文件。②项目根路径下的配置文件。③模块classpath(打包之后,src下的java文件夹和resource文件夹都会被打包到classpath下面)下的config文件夹下面的配置文件。④模块classpath下面的配置文件(application.properties默认就是采用这种方式)

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务