Spring Boot初学前,相关知识点热身

Spring Boot的自动配置

快速构建我们的Spring Boot项目,项目展开如图所示:
在这里插入图片描述
其中红圈标注部分就是我们的应用启动类,打开它:
在这里插入图片描述
@SpringBootApplication是SpringBoot项目的核心注解,主要目的就是开启自动配置。Spring Boot在进行SpringApplication对象实例化时会加载Maven Dependencies下spring-boot-autoconfigure-版本号.jar下的META-INF里面的spring.factories文件,将该配置文件中的配置载入到spring容器,进行自动配置。
在这里插入图片描述

Spring Boot部分常用注解

  • @SpringBootApplication
    @SpringBootApplication与同时使用@Configuration、@EnableAutoConfiguration、@ComponentScan对等,spring框架会从@ComponentScan所在类的包开始扫描,所以应用启动类已启动就会扫描所有包。

  • @RestController
    @RestController注解是等价于@Controller+@ResponseBody的结合,使用这个注解的类,里面的方法都以JSON格式输出。

  • @Autowired、@Resource、@Inject
    这三个都是做bean的注入时使用。
    注意:@Resource并不是spring的注解,它需要导入javax.annotation.Resource包,只不过spring支持该注解的注入
    三者区别:

注解自动注入策略补充
@Autowird默认byType要求依赖对象必须存在,如果允许null,就必须设置它的required属性为false。结合@qualifier(“名称”)一起使用的话,就是按byName装配了
@Resource默认byName有name和type两个重要属性,使用name就是byName自动注入策略 ,使用type就是byType自动注入策略
@InjectbyType没有required属性
  • @Bean
    将标注的方法的返回值作为一个bean注册到spring的IOC容器,方法名默认成该bean定义的id

  • @Component,@Service,@Controller,@Repository
    放在类上,表示将这些类纳入spring容器进行管理

  • @Configuration
    @Configuration 注解本质上还是 @Component。
    @Configuration 注解的 bean 都已经变成了增强的类。
    @Configuration 中所有带 @Bean 注解的方法都会被CGLIB动态代理,调用该方法返回的都是同一个实例。

  • @Param
    在dao层声明参数

  • @requestBody
    接收参数时用来处理content-type不是默认application/x-www-form-urlcoded编码的内容,比如application/json或者是application/xml等,一般情况下来说常用其来处理application/json类型。

Spring Boot热部署-自动重启的原理

spring boot使用两个类加载器,实现不变的类和正在开发的类分离,不变的类如jar由base类加载器加载,正在开发的类由restart类加载器加载。应用重启时,restart类加载器被扔掉创建,而base类加载器不变。

Spring Boot事务

1.事务说明

有编程式事务管理和声明式事务管理两种方式。

  • 编程式事务管理
    编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
  • 声明式事务管理
    建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

声明式事务管理不需要入侵代码,通过@Transactional注解就可以进行事务操作,快捷简单。推荐使用。

2.声明式事务的使用

1.声明式事务管理只对RuntimeException()异常或是其子类进行事务回滚;checked异常,即Exception,可try{}catch{}捕获,是不会回滚的。对于自定义异常和运行时异常,可以通过@Transactional注解的rollbackFor属性进行设定。
捕获异常后,需要同时进行回滚,我们可以手动回滚:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

2.事务常用的属性

参数功能描述
rollbackFor该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。例如:指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})
rollbackForClassName该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。例如:指定单一异常类名称@Transactional(rollbackForClassName=”RuntimeException”)指定多个异常类名称:@Transactional(rollbackForClassName={“RuntimeException”,”Exception”})
noRollbackFor该属性用于设置不需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,不进行事务回滚。例如:指定单一异常类:@Transactional(noRollbackFor=RuntimeException.class)指定多个异常类:@Transactional(noRollbackFor={RuntimeException.class, Exception.class})
noRollbackForClassName该属性用于设置不需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,不进行事务回滚。例如:指定单一异常类名称:@Transactional(noRollbackForClassName=”RuntimeException”)指定多个异常类名称:@Transactional(noRollbackForClassName={“RuntimeException”,”Exception”})

新学不久,有不足之处,欢迎各位指正!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值