springboot——小知识总结

一、springboot默认规则:

(1)springboot默认扫描规则是:自动扫描启动器类的同包或者其子包的下的注解

(2)使用默认数据库配置,那么属性文件中的属性名要是固定值不能改变

(3)Springboot默认集成的就是logback,logback相对来说是优秀于log4j的,log4j2也是参考了logback的设计。本篇就是来看看如何使用logback。新建一个Springboot项目,勾选web就OK了,项目会自动集成logback

(4)springboot启动时会根据依赖生成bean,不会主动读取xml文件,但是会主动读取属性文件

(5)资源文件的约定目录结构 
         Maven的资源文件目录:/src/Java/resources 
         spring-boot项目静态文件目录:/src/java/resources/static 
         spring-boot项目模板文件目录:/src/java/resources/templates 
         spring-boot静态首页的支持,即index.html放在以上目录结构会直接映射到应用的根目录下

(6)全局异常控制:全局异常GolbalExceptionHandler处理公共的异常问题

(7)springboot全局的配置文件application.properties

(8)启动类放到最外层,否则报错

(9)使用自己配置的连接池,启动类上需加:

         @ComponentScan(basePackages = {"com.aliyun.et.industry.templateboot","com.example.demo"})

二、注解

@RestController

——Spring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合。即@RestController是@ResponseBody和@Controller的组合注解。

@ResponseBody

——@ResponseBody这个注解表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用。

@Configuration,@Bean,@Primary

——Consider marking one of the beans as @Primary, updating the consumer to acce
考虑将bean中的一个标记为“初级”,将消费者更新为ACCE。
用@Configuration,@Bean,@Primary

——类上的注解@Configuration 是最新的用注解配置spring,也就是说这是个配置文件,和原来xml配置是等效的,只不过现在用java代码进行配置了 加上一个@Configuration注解就行了,是不是很方便,不需要那么繁琐的xml配置了,这样基于注解的配置,可读性也大大增高了。

@Transactional

——在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。

@Async,@EnableAsync

——加入@async方法异步方法,@EnableAsync是开启异步功能

注意:同步:a,b,c三个方法依次执行完毕、异步:a,b(异步方法),c,那么a不用等b执行完毕,c就可以执行啦

@Scheduled,@EnableScheduling

——@EnableScheduling:开启任务调度功能、@Scheduled:定时任务任务

https://blog.csdn.net/jek123456/article/details/74118879

@EnableCaching,@Cacheable,@CachePut

——@EnableCaching开启缓存

——在方法上加@Cacheable,会根据key直接取缓存内容,如果不存在创建

——在方法上加@CachePut,根据key更新缓存内容

@ComponentScan

——@ComponentScan告诉Spring 哪个packages 的用注解标识的类 会被spring自动扫描并且装入bean容器。SpringBoot在写启动类的时候如果不使用@ComponentScan指明对象扫描范围,默认指扫描当前启动类所在的包里的对象,如果当前启动类没有包,则在启动时会报错:Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package错误。
因为启动类不能直接放在main/java文件夹下,必须要建一个包把它放进去或者使用@ComponentScan指明要扫描的包。代码示例如下:@ComponentScan(basePackageClasses=要扫描类.class所在位置的包)-意思是要扫描哪个类所在的包

@RequestMapping中的consumes,produces

——consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
——produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

https://blog.csdn.net/blueheart20/article/details/45174399

@ResponseBody 和 @RequestBody 区别

——@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中

——@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

https://blog.csdn.net/ff906317011/article/details/78552426

@Order(1)

——@Order(1):aop切面加载顺序,Order值越小,优先级越高!

@annotation

——@annotation(com.cxh.study.aop.controller.UserAccessAnnotation) 表示拦截含有这个注解的方法

@MapperScan

——多包扫描:@MapperScan({"com.kfit.*.mapper","org.kfit.*.mapper"})

@ImportResource(locations = {"classpath:spring-datasource.xml" })

——启动时读取文件

三、类、接口

1、实现ApplicationContextAware:Spring容器会检测容器中的所有Bean,如果发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContextAware()方法,调用该方法时,会将容器本身作为参数传给该方法——该方法中的实现部分将Spring传入的参数(容器本身)赋给该类对象的applicationContext实例变量,因此接下来可以通过该applicationContext实例变量来访问容器本身。

2、AbstractRoutingDataSource:数据源动态切换

猜你喜欢

转载自blog.csdn.net/qq_42683700/article/details/81285560