1月25日java假期学习读书笔记
一、学习目标
了解Spring Boot事务管理的基本概念和配置方法。
掌握Spring Security的基本功能,包括用户认证和授权。
学习如何在Spring Boot应用中集成Spring Security。
通过实际练习,实现一个简单的用户认证功能。
理解事务管理在数据库操作中的重要性。
二、学习内容
(一)Spring Boot事务管理
-
事务管理的概念
事务是一组操作的集合,要么全部成功,要么全部失败。
在数据库操作中,事务确保数据的一致性和完整性。 -
Spring事务管理的优势
声明式事务管理:通过注解(如@Transactional)声明事务,无需手动编写事务代码。
与Spring集成:无缝集成Spring的依赖注入和AOP功能。 -
配置事务管理
添加依赖:
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基础 -
Spring Security简介
Spring Security是一个功能强大且高度可定制的Java安全框架,用于保护基于Spring的应用程序。
它提供了认证(Authentication)和授权(Authorization)功能。 -
集成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");
}
} -
用户认证和授权
用户认证:通过用户名和密码验证用户身份。
授权:根据用户角色分配访问权限。
(三)实际练习:实现一个简单的用户认证功能 -
创建用户控制器
java
复制
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/info")
public String userInfo() {
return "Welcome, " + SecurityContextHolder.getContext().getAuthentication().getName();
}
} -
运行和测试
启动项目后,访问http://localhost:8080/user/info,会自动跳转到登录页面。
使用预定义的用户(如admin或user)登录后,返回用户信息。
三、学习心得
事务管理的重要性
事务确保了数据库操作的原子性,避免部分操作成功导致数据不一致的问题。
Spring Boot的声明式事务管理通过注解简化了事务的配置。
Spring Security的强大功能
Spring Security提供了强大的认证和授权功能,可以轻松实现用户登录、角色管理和访问控制。
配置灵活,支持多种认证方式(如表单登录、JWT等)。
实践的重要性
通过实际编写代码,我更好地理解了事务管理和Spring Security的使用方法。
实践可以帮助快速发现和解决问题,加深对知识点的理解。
浙公网安备 33010602011771号