Spring Cloud的分布式事务组件
今天我学习了Spring Cloud的分布式事务组件:Spring Cloud Alibaba Seata。Spring Cloud Alibaba Seata是一种分布式事务管理框架,能够实现分布式事务的ACID特性。下面是一个使用Spring Cloud Alibaba Seata的示例:
@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("com.example.demo.dao")
@EnableAutoDataSourceProxy
@EnableFeignClients(basePackages = "com.example.demo.service.feign")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@RestController
class HelloController {
@Autowired
private HelloService helloService;
@GetMapping("/hello")
public String hello() {
return helloService.hello();
}
}
@Service
@FeignClient("demo-service-provider")
interface HelloService {
@GetMapping("/hello")
String hello();
}
@Service
public class HelloServiceImpl implements HelloService {
@Autowired
private HelloMapper helloMapper;
@Override
@GlobalTransactional
public String hello() {
helloMapper.insert(new Hello(1L, "Hello, world!"));
return "Hello, world!";
}
}
@Mapper
public interface HelloMapper {
@Insert("insert into hello(id, message) values(#{id}, #{message})")
int insert(Hello hello);
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Hello {
private Long id;
private String message;
}
这个示例中,我们使用@EnableAutoDataSourceProxy注解将数据源代理给Seata,使用@EnableFeignClients注解创建一个FeignClient实例,使用@GlobalTransactional注解标记服务的入口方法,从而实现分布式事务的ACID特性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现