transactional注解?transactional注解一般用于
springboot常用注解有哪些
SpringBoot是一个基于Spring框架的开发框架,它提供了许多注解来简化开发过程。以下是一些SpringBoot中常用的注解:
1.`@SpringBootApplication`:用于标注主启动类,表示该类是一个SpringBoot应用的入口点。
2.`@RestController`:用于标注Controller类,表明该类中的方法会返回RESTful风格的响应。
3.`@GetMapping`/`@PostMapping`/`@PutMapping`/`@DeleteMapping`:用于标注Controller中的方法,分别表示处理GET/POST/PUT/DELETE请求的接口。
4.`@RequestBody`:用于将请求体中的JSON或XML数据绑定到方法的参数上。
5.`@RequestParam`:用于获取请求参数的值,并将其绑定到方法的参数上。
6.`@PathVariable`:用于获取URL路径中的变量值,并将其绑定到方法的参数上。
7.`@Autowired`:用于自动注入依赖对象,可以用于构造器、字段、方法等位置。
8.`@Service`:用于标注服务层(Service)的类。
9.`@Repository`:用于标注数据访问层(Repository)的类。
10.`@Component`:用于标注组件类,通常用于对非业务逻辑的类进行注解。
11.`@Configuration`:用于标注配置类,表示该类中包含Bean的定义。一般与`@Bean`一起使用。
12.`@Bean`:用于标注方法,表示该方法返回的对象会被注册为Bean,并交由Spring容器管理。
这些只是SpringBoot中一些常用的注解,实际上SpringBoot还提供了很多其他注解,用于支持事务管理、异常处理、AOP等功能。具体使用哪些注解取决于项目需求和开发实践。
transaction注解原理
transaction注解是一种在Spring中使用的注解,用于对方法或类进行事务管理。它的原理是将带有该注解的方法或类包装在一个事务中,当方法执行完成时,根据方法的执行结果自动提交或回滚事务。
这个注解通过AOP代理实现,当调用带有该注解的方法时,AOP代理会根据注解的属性配置开启一个事务,并将事务绑定到当前线程上,方法执行完后根据返回结果决定是否提交或回滚事务。
在异常抛出时,事务会自动回滚,确保数据的一致性。
为什么spring的事务@transaction注解只对public方法有效
理论上而言,不public,也可以用aop实现transactional的功能,但我感觉只针对public是考虑外部调用,而且也只能从外部调用。加在interface上这个没意义吧。





