Spring Boot 学习填的坑一

时间:2023-03-10 07:22:08
Spring Boot 学习填的坑一

1.关于springBoot自动扫描规则:

SpringBoot项目的Bean装配默认规则是根据Application类所在的包位置从上往下扫描!
"Application"类是指SpringBoot项目入口类。这个类的位置很关键:
如果Application类所在的包为:com.boot.app,则只会扫描com.boot.app包及其所有子包,如果service或dao所在包不在com.boot.app及其子包下,则不会被扫描!
所以Application类放到dao、service所在包的上级。
2.Thymeleaf模板引擎
thymeleaf基于html控件的语法,可以在有网无网的情况下皆可运行,既可以让美工在前台可以看到静态效果,也可以让程序员在服务器查看带数据的动态页面效果。
html模板引擎,它可以完全替代jsp,提供标准方言和一个与SpringMVC完美集成的可选模块可以快速实现表单绑定、属性编辑器、国际化等功能。
3.springboot注解
@Controller:该注解用于类上,其表明该类是 SpringBoot的 Controller;
@RequestMapping:该注解主要用来映射 Web 请求,其可以用于类或者方法上;
@RequestParam:该注解主要用于将请求参数数据映射到功能处理方法的参数上;
@ResponseBody:该注解的作用是将方法的返回值放在 Response 中,而不是返回一个页面,其可以用于方法上或者方法返回值前;
@RequestBody:用于读取 HTTP 请求的内容(字符串),通过 Spring MVC 提供的 HttpMessageConverter 接口将读到的内容转换为 JSON、XML 等格式的数据并绑定到 Controller 方法的参数上;
@PathVariable:用于接收请求路径参数,将其绑定到方法参数上;
@RestController:该注解是一个组合注解,只能用于类上,其作用与 @Controller、@ResponseBody一起用于类上等价。
JPA 原生写法:
@Transactional --事务注解
@Modifying(clearAutomatically = true)
@Query(value = "update people set name=?2 where id=?1",nativeQuery = true)
@Modifying(clearAutomatically = true)是可以清除底层持久化上下文,就是entityManager这个类,我们知道jpa底层实现会有二级缓存,也就是在更新完数据库后,如果后面去用这个对象,你再去查这个对象,这个对象是在一级缓存,但是并没有跟数据库同步,这个时候用clearAutomatically=true,就会刷新hibernate的一级缓存了, 不然你在同一接口中,更新一个对象,接着查询这个对象,那么你查出来的这个对象还是之前的没有更新之前的状态。
 @component (把普通pojo实例化到spring容器中,相当于配置文件中的
<bean id="" class=""/>)
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
说明:
<context:component-scan base-package=”com.*”>
上面的这个例子是引入Component组件的例子,其中base-package表示为需要扫描的所有子包。
共同点:被@controller 、@service、@repository 、@component 注解的类,都会把这些类纳入进spring容器中进行管理
SpringBOOT 集成RabbitMQ
@RabbitListener 和 @RabbitHandler 搭配使用
@RabbitListener 可以标注在类上面,需配合 @RabbitHandler 注解一起使用
@RabbitListener 标注在类上面表示当有收到消息的时候,就交给 @RabbitHandler 的方法处理
@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文)