- 前言
- 第一部分 基础应用开发
- 第 1 章 Spring Boot 入门
- 第 2 章 在 Spring Boot 中使用数据库
- 第 3 章 Spring Boot 界面设计
- 第 4 章 提高数据库访问性能
- 第 5 章 Spring Boot 安全设计
- 第二部分 分布式应用开发
- 第 6 章 Spring Boot SSO
- 第 7 章 使用分布式文件系统
- 第 8 章 云应用开发
- 第 9 章 构建高性能的服务平台
- 第三部分 核心技术源代码分析
- 第 10 章 Spring Boot 自动配置实现原理
- 第 11 章 Spring Boot 数据访问实现原理
- 第 12 章 微服务核心技术实现原理
- 附录 A 安装 Neo4j
- 附录 B 安装 MongoDB
- 附录 C 安装 Redis
- 附录 D 安装 RabbitMQ
- 结束语
5.6 运行与发布
本章实例工程的完整代码可以通过 IDEA 直接从 GitHub 中检出: https://github.com/chenfromsz/spring-boot-security.git 。实例工程中包含两个模块:mysql 和 web,其中 mysql 模块提供数据库管理功能,web 模块集成了安全管理和一个数据管理后台的功能,即用户登录后可以对用户、部门和角色等各个对象的数据进行管理。
5.6.1 系统初始化
为了初始化一个能够登录系统的用户,我们在工程模块 mysql 中编写了一个 JUint 测试程序,用来生成一个具有所属部门和拥有角色的用户,如代码清单 5-25 所示。测试程序执行时,将初始化数据库,并生成一个部门和一个角色,同时创建一个初始用户,用户名和密码都为 user,这个用户默认具有管理员的权限。
代码清单 5-25 系统初始化测试程序
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {JpaConfiguration.class}) public class MysqlTest { @Autowired UserRepository userRepository; @Autowired DepartmentRepository departmentRepository; @Autowired RoleRepository roleRepository; @Before public void initData(){ userRepository.deleteAll(); roleRepository.deleteAll(); departmentRepository.deleteAll(); Department department = new Department(); department.setName("开发部 "); departmentRepository.save(department); Assert.notNull(department.getId()); Role role = new Role(); role.setName("admin"); roleRepository.save(role); Assert.notNull(role.getId()); User user = new User(); user.setName("user"); BCryptPasswordEncoder bpe = new BCryptPasswordEncoder(); user.setPassword(bpe.encode("user")); user.setCreatedate(new Date()); user.setDepartment(department); userRepository.save(user); Assert.notNull(user.getId()); } @Test public void insertUserRoles(){ User user = userRepository.findByName("user"); Assert.notNull(user); List<Role> roles = roleRepository.findAll(); Assert.notNull(roles); user.setRoles(roles); userRepository.save(user); } }
这样,就可以在 IDEA 的 Edit Configuration 中增加一个 JUint 测试配置项目,模块选择 mysql,工作目录选择 mysql 模块所在的工程根目录,测试类选择上面的测试程序,并将配置保存为 MysqlTest。
然后在 MySQL 服务器中创建一个 test 数据库,并在测试程序所在目录中打开配置类 JpaConfiguration 的实现代码,配置数据源中的 url、username、password,如代码清单 5-26 所示。
代码清单 5-26 测试程序的 JpaConfiguration 数据源配置
@Bean public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql:// localhost:3306/test?characterEncoding= utf8"); dataSource.setUsername("root"); dataSource.setPassword("12345678"); return dataSource; }
最后运行测试项目 MysqlTest,运行成功后生成一个初始用户,用户名和密码为 user,并且该用户的所属部门为“开发部”,拥有一个管理员角色为 admin。
5.6.2 系统运行与发布
首先,在 web 模块的配置文件 application.yml 中配置连接 MySQL 服务器的数据源,其他 JPA 和安全配置可以保持不变。
如果在 IDEA 中运行应用,可以在 IDEA 的 Edit Configuration 中增加一个 Spring Boot 配置项目,模块选择 web,工作目录选择 web 模块所在的工程根目录,主程序选择 com.test.web.WebApplication,并将配置项目保存为 web。
然后运行配置项目 web 即可启动 web 应用,启动成功后,在浏览器中输入网址 http://localhost 访问应用。
在出现的登录界面中,输入上面生成的用户名和密码 user,并输入正确的验证码,即可登录系统。登录系统后,可对用户、部门和角色进行管理。
如果要发布应用,既可以在 IDEA 中增加一个 Maven 配置,也可以打开一个命令行窗口,将目录切换到工程的根目录,然后执行下列指令来完成。
mvn clean package
注意 使用上面的发布指令将会自动调用 MysqlTest 测试程序,这将删除数据库的所有资料,执行初始化操作,然后创建一个初始用户,用户名和密码都为 user,并且具有管理员的权限。如果不想自动调用测试程序,可在上面指令中加上参数:-D skipTests。
打包成功后可在命令行窗口中,运行下列指令启动系统(假如当前目录为工程根目录)。
java – jar web/target/web-1.0-SNAPSHOT.jar
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论