1月25日java假期学习读书笔记

一、学习目标
了解Spring Boot事务管理的基本概念和配置方法。
掌握Spring Security的基本功能,包括用户认证和授权。
学习如何在Spring Boot应用中集成Spring Security。
通过实际练习,实现一个简单的用户认证功能。
理解事务管理在数据库操作中的重要性。
二、学习内容
(一)Spring Boot事务管理

  1. 事务管理的概念
    事务是一组操作的集合,要么全部成功,要么全部失败。
    在数据库操作中,事务确保数据的一致性和完整性。

  2. Spring事务管理的优势
    声明式事务管理:通过注解(如@Transactional)声明事务,无需手动编写事务代码。
    与Spring集成:无缝集成Spring的依赖注入和AOP功能。

  3. 配置事务管理
    添加依赖:
    xml
    复制

    org.springframework.boot
    spring-boot-starter-data-jpa

    启用事务管理:
    java
    复制
    @SpringBootApplication
    @EnableTransactionManagement
    public class Application {
    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    }
    使用@Transactional注解:
    java
    复制
    @Service
    public class UserService {
    @Autowired
    private UserRepository userRepository;

    @Transactional
    public User createUser(User user) {
    return userRepository.save(user);
    }
    }
    (二)Spring Security基础

  4. Spring Security简介
    Spring Security是一个功能强大且高度可定制的Java安全框架,用于保护基于Spring的应用程序。
    它提供了认证(Authentication)和授权(Authorization)功能。

  5. 集成Spring Security
    添加依赖:
    xml
    复制

    org.springframework.boot
    spring-boot-starter-security

    配置Spring Security:
    java
    复制
    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
    http
    .csrf().disable() // 禁用CSRF保护
    .authorizeRequests()
    .antMatchers("/admin/").hasRole("ADMIN") // 配置访问权限
    .antMatchers("/user/
    ").hasRole("USER")
    .anyRequest().authenticated() // 其他请求需要认证
    .and()
    .formLogin().permitAll(); // 允许所有用户访问登录页面
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
    .withUser("admin").password("{noop}admin").roles("ADMIN")
    .and()
    .withUser("user").password("{noop}user").roles("USER");
    }
    }

  6. 用户认证和授权
    用户认证:通过用户名和密码验证用户身份。
    授权:根据用户角色分配访问权限。
    (三)实际练习:实现一个简单的用户认证功能

  7. 创建用户控制器
    java
    复制
    @RestController
    @RequestMapping("/user")
    public class UserController {
    @GetMapping("/info")
    public String userInfo() {
    return "Welcome, " + SecurityContextHolder.getContext().getAuthentication().getName();
    }
    }

  8. 运行和测试
    启动项目后,访问http://localhost:8080/user/info,会自动跳转到登录页面。
    使用预定义的用户(如admin或user)登录后,返回用户信息。
    三、学习心得
    事务管理的重要性
    事务确保了数据库操作的原子性,避免部分操作成功导致数据不一致的问题。
    Spring Boot的声明式事务管理通过注解简化了事务的配置。
    Spring Security的强大功能
    Spring Security提供了强大的认证和授权功能,可以轻松实现用户登录、角色管理和访问控制。
    配置灵活,支持多种认证方式(如表单登录、JWT等)。
    实践的重要性
    通过实际编写代码,我更好地理解了事务管理和Spring Security的使用方法。
    实践可以帮助快速发现和解决问题,加深对知识点的理解。

posted @ 2025-02-19 23:41  头发少的文不识  阅读(23)  评论(0)    收藏  举报