在软件的开发流程中,我们需要将软件部署到多个环境,经过多轮验证后才能最终上线。在不同的阶段中,软件的运行态可能是不一样的,比如本地开发时可能将所依赖的第三方系统stub掉;持续集成构建时可能使用的是测试用的内存数据库等等。为此,本文的示例项目推荐采用以下环境:
- local:用于开发者本地开发
- ci:用于持续集成
- dev:用于前端开发联调
- qa:用于测试人员
- uat:类生产环境,用于功能验收(有时也称为staging环境)
- prod:正式的生产环境
CORS
在前后端分离的系统中,前端单独部署,有时连域名都和后端不同,此时需要进行跨域处理。传统的做法可以通过JSONP,但这是一种比较“trick”的做法,当前更通用的实践是采用CORS机制,在Spring Boot项目中,启用CORS配置如下:
- @Configuration
- public class CorsConfiguration {
- @Bean
- public WebMvcConfigurer corsConfigurer() {
- return new WebMvcConfigurer() {
- @Override
- public void addCorsMappings(CorsRegistry registry) {
- registry.addMapping("/**");
- }
- };
- }
- }
对于使用Spring Security的项目,需要保证CORS工作于Spring Security的过滤器之前,为此Spring Security专门提供了相应配置:
- @EnableWebSecurity
- public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- // by default uses a Bean by the name of corsConfigurationSource
- .cors().and()
- ...
- }
-
- @Bean
- CorsConfigurationSource corsConfigurationSource() {
- CorsConfiguration configuration = new CorsConfiguration();
- configuration.setAllowedOrigins(Arrays.asList("https://example.com"));
- configuration.setAllowedMethods(Arrays.asList("GET","POST"));
- UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- source.registerCorsConfiguration("/**", configuration);
- return source;
- }
- }
常用第三方类库
这里列出一些比较常见的第三方库,开发者们可以根据项目所需引入:
- Guava:来自Google的常用类库
- Apache Commons:来自Apache的常用类库
- Mockito:主要用于单元测试的mock
- DBUnit:测试中管理数据库测试数据
- Rest Assured:用于Rest API测试
- Jackson 2:Json数据的序列化和反序列化
- jjwt:Jwt token认证
- Lombok:自动生成常见Java代码,比如equals()方法,getter和setter等;
- Feign:声明式Rest客户端
- Tika:用于准确检测文件类型
- itext:生成Pdf文件等
- zxing:生成二维码
- Xstream:比Jaxb更轻量级的XML处理库
总结
本文通过一个示例项目谈及到了项目之初开发者搭建后端工程的诸多方面,其中的绝大多数实践均在笔者的项目中真实落地。读完本文之后你可能会发现,文中的很多内容都是很基础很简单的。没错,的确没有什么难的东西,但是要系统性地搭建好后端项目的基础框架却不见得是每个开发团队都已经做到的事情,而这恰恰是本文的目的。最后,需要提醒的是,本文提到的实践方式只是一个参考,一方面依然存在考虑不周的地方,另一方面示例项目中用到的技术工具还存在其他替代方案,请根据自己项目的实际情况进行取舍。
作者:无知者云
链接:https://www.jianshu.com/p/bd8136129dfb
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
(编辑:应用网_丽江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|