Spring Boot 起步
………………………………………………………………………………………………………………
【应用配置】application.yml 【port】【context-path】【datasource】【jpa】
@Value("${var}") 可取到 yml 所声明的变量
@ConfigurationProperties(prefix="yourgroup") 一次性取到 yml 所声明一组变量
【profile 机制】application.yml application-dev.xml application-prod.xml
spring.profiles.active=dev (properties写法,常用在说明文档)
……………………………………………………………………………………………………………………………………
【Controller】@RestController = @ResponseBody+@Controller 可以返回 JSON
@RequestMapping(路由,方法) 懒人写法 @GetMapping @PostMapping
@PathVariable 等同于 express 中的 req.params 大家都爱叫路径参数 请求参数 路径变量...
@RequestParam 等同于 req.query ,记住 Servlet的req.getParameter是不区分 urlencoded 来的还是 form-data。
…………………………………………………………………………………………………………………………………………
【REST API】http://en.wikipedia.org/wiki/Representational_state_transfer
GET /grils
POST /grils
GET /girls/id
PUT /grils/id 如果没有则创建,postman注意使用 x-www-form-urlencoded 而不是 form-data
DELETE /girls/id
【mysql】jdbc:mysql://127.0.0.1:3306/dbname
spring.datasource.driver...
【jpa】比较流行 hibernate 实现 JPA 规范。
jpa.hibernate.ddl-auto:create # 每次启动应用都创建一个
jpa.hibernate.ddl-auto:update # 每次启动应用都创建一个
jpa.hibernate.show-sql
public interface GrilRepository extends JpaRepository<Gril,Integer>{}//使用默认实现
【模型设计】
@Entity
@Id
@GeneratedValue
getter setter / accessor mutator
【实现路由 REST API】
1.查看 设计 逐一实现 比如表单验证 @Valid @Min @NotNull ...
2.使用 JPA 规范 API 比如签名 findOne findById
……………………………………………………………………
【Service 层】业务逻辑,让controller专注于HTTP请求路由。
@Service
@Trancsational 事务原子操作 要么成功 要么就不成功。
…………………………………………………………………………………………………………………………………………
日常【错误异常处理】Spring对RuntimeException有事务回滚功能,而不是Exception。
@Vaild + BindingResult(一个传错误消息(调试用)的类)
【定义错误消息和REST API调用统一】Result{code,msg,data}
【定义异常消息和REST API调用统一】@ControllerAdvice + @ExceptionHandler@ResponseBody
【维护自定义的错误码放在一处】ResultEnum 用枚举类型关联(code,msg)
【综述错误处理还是要放在实践上】总结只是提出集中的办法。
……………………………………………………………………………………………………………………
日常【日志】log4j log4j2 logback(boot官方推荐) 作者都是同一个。
private static final Logger logger = LogFactory.getLogger(.class)
日常【拦截请求 | 日志 | 安全 系统通用部分 AOP】直接联系代码 更容易理解
@Aspect
【切点】@Pointcut("execution (public com.example.class_name.method_name(..))")
public void log(){}
@Before("log()")
【扩展点 可以取到 类方法、参数】public void doBefore(Joinpoint jp)
@After("log()")
@AfterReturning(returning,pointcut)
………………………………………………………………………………………………………………
TDD 加速 Spring Boot 开发,我们都知道前端的优势在于 REPL 环境非常快得到明确的结果,在 java 这种 jit 甚至 aot 环境想要获得这种明确快速的体验可以通过 测试 手段帮助。
日常【单元测试】idea可以右键方法 Go To 生成 Test。
@RunWith(SpringRunner.class) //基于 JUnit
@SpringBootTest //表示需要启动应用
@AutoConfigureMockMvc //省去了启动浏览器 相当于 headerless(不知道我理解错了没有) 的浏览器。
mvn clean package 会自动启动单元测试
mvn clean package -Dmaven.test.skip=true 跳过单元测试
………………………………………………………………………………………………
以下为深入 Spring Boot 本质 部分。
…………………………………………………………………………………………
IoC = DI + DL
Bean 一个个注入 <bean id="identifier" class="pkg">
Bean 整批 自动扫描 <context:component-scan base-package="pkg"> + 高内聚的注解,@ComponentScan(basePackage)
xml描述依赖 或者 @Autowired 和 @Inject
或者 JavaConfig 是 Guice 推动,@Conifiguration,核心就是依赖注入 Singleton 。
……………………………………………………………………………………………………
@SpringBootApplication 最主要分解 @ComponentScan
+ @EnableAutoConfiguration 通过@Import将所有符合自动配置条件的Bean加载到IoC容器 ,核心类是SpringFactoriesLoader。
+ @Configuration =》@EnableAutoConfigurationImportSelector + SpringFactoriesLoader => ApplicationContext 。
…………………………………………………………………………………………………………………………
SpringApplication模板化了启动流程,提供了一系列扩展点。
………………………………………………………………………………………………………………………………
基于Spring的约定优先于配置(COC),提供针对日常企业应用研发场景【Spring-boot-starter】实现【自动配置依赖模块(开箱即用)】。
我们可以干预SpringBoot配置的方式:
1.命令行参数
2.系统环境变量
3.classpath
4.filesystem
5.代码硬编码
Spring Boot 起步的更多相关文章
- Spring Boot起步依赖:定制starter
在定制我们自己的起步依赖--xxx.spring.boot.starter之前,我们先了解下什么是Spring Boot起步依赖. 起步依赖,是Spring Boot带给我们的一项重要的便利.要理解S ...
- 1.spring boot起步之Hello World【从零开始学Spring Boot】
[视频&交流平台] àSpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008&utm ...
- (1)spring boot起步之Hello World【从零开始学Spring Boot】
Spring Boot交流平台 1.1 介绍 自从structs2出现上次的漏洞以后,对spring的关注度开始越来越浓. 以前spring开发需要配置一大堆的xml,后台spring加入了annot ...
- 创建Spring Boot项目的几种方式总结
一.我们可以使用Spring Initializr来创建SpringBoot项目. Spring Initializr从本质上来说就是一个Web应用程序,它能为你生成Spring Boot项目结构.虽 ...
- 49. spring boot日志升级篇—理论【从零开始学Spring Boot】
我们之前在其中的一篇文章介绍过如何在spring boot中使用日志记录SLF4J. Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如 ...
- 48. spring boot单元测试restfull API【从零开始学Spring Boot】
回顾并详细说明一下在在之前章节中的中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建 ...
- (44). Spring Boot日志记录SLF4J【从零开始学Spring Boot】
在开发中打印内容,使用 System.out.println() 和 Log4j 应当是人人皆知的方法了. 其实在开发中我们不建议使用 System.out 因为大量的使用 System.out 会增 ...
- (43). Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】
在上一篇我们介绍了多数据源,但是我们会发现在实际中我们很少直接获取数据源对象进行操作,我们常用的是jdbcTemplate或者是jpa进行操作数据库.那么这一节我们将要介绍怎么进行多数据源动态切换.添 ...
- (42)Spring Boot多数据源【从零开始学Spring Boot】
我们在开发过程中可能需要用到多个数据源,我们有一个项目(MySQL)就是和别的项目(SQL Server)混合使用了.其中SQL Server是别的公司开发的,有些基本数据需要从他们平台进行调取,那么 ...
随机推荐
- C语言中的类型转换——将字符串s转换为整数型(int)类型
在讲类型转换之前,我们先要理解下C语言中单引号和双引号的区别. 先讲双引号,双引号就是字符串,我们要证实我们的想法,我选择写一段代码看看开: #include <stdio.h> int ...
- 【POJ2226】Muddy Fields
题目大意:给定一个 N*M 的图,图中有一些格子不能被任何东西覆盖,现有一些宽度为 1,长度任意的骨牌覆盖这些可以被覆盖的格子,骨牌之间可以重叠,求将所有可以被覆盖的格子覆盖所需的最小骨牌数是多少. ...
- [luogu4626][一道水题2]
题目链接 思路 这个首先想到质因数分解.然后发现只要对于每个质数将ans乘以这个质数在从1到n中出现过的最高指数次就行了. 这个\(10^8\)令人发指.一直tle,最后发现吸口氧才能过.. 代码 # ...
- Django(十八)Model操作补充
参考博客:http://www.cnblogs.com/wupeiqi/articles/6216618.html 1. 创建类 class UserInfo(model.Model): age = ...
- 真机控件获取 app-inspector
1.安装app-inspector:npm install app-inspector -g 若是要卸载原有的:npm uninstall app-inspector -g np ...
- 第二十三篇-ubuntu18.04怎么下载播放器以及如何设置默认播放器
下载播放器 安装命令:sudo apt-get install smplayer再安装解码器: 安装win32codecs包 如果是intel的CPU 代码: sudo apt-get install ...
- Echarts关于仪表盘
https://blog.csdn.net/zc763375777/article/details/53837391 来无事,制作不一样的图标一发,领导让把仪表盘做成百分条,我TM也是醉了,大体样式如 ...
- MATLAB中mesh函数的使用:基于像素强度画3D密度图(create a 3D density plot based on the pixel intensity:mesh function)
所用的函数非常简单,只需要用到mesh函数,示例代码如下: Ima=imread('F:\pathto\test.jpg'); surf_ima = surf(rgb2gray(Ima)); %黑色的 ...
- pthread_create()
pthread_create()创建的线程没有执行,试了好几遍.非常郁闷.后来发现主线程没有睡眠,新创建的线程还没来的及执行主线程就退出了,所以没有执行.
- Image.fromarray的用法
简而言之,就是实现array到image的转换 详细参考以下博客 https://blog.csdn.net/ybcrazy/article/details/81206411