1Spring boot简介

主要用来简化spring开发,快速地创建独立的spring项目,并且与云计算天然集成。

2. @Controller 

标记一个类是Controller,也可以标记方法,标记方法时是指传统Web的Controller,返回的是字符串。

3. @ResponseBody

注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML。例如:  
 @RequestMapping("/login")
@ResponseBody
public User login(User user){
  return user;
}
User字段:userName pwd
那么在前台接收到的数据为:
 '{"userName":"xxx","pwd":"xxx"}'
效果等同于如下代码:
 @RequestMapping("/login")
public void login(User user, HttpServletResponse response){
response.getWriter.write(JSONObject.fromObject(user).toString());
}

4. @RequestBody

将前端发来的json格式数据转换成java对象,比如
 @PostMapping(value = "/log/runtime/info")
public CommonResponse getMesosClusterInfo(@RequestBody QueryLogRequest request) throws BearException {
CommonResponse commonResponse = new CommonResponse();
commonResponse.setData(request);
return commonResponse;
}

5. @RestController

@RestController = @Controller + @ResponseBody
在编写接口时标记方法是一个Rest接口,返回一个可序列化的Json或者XML对象。Controller中的注解具体可以参考:必须知道的Spring Boot中的一些Controller注解

6. @RequestMapping简介

指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置:
 <servlet>
<servlet-name>servletName</servlet-name>
<servlet-class>ServletClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>serveltName</servlet-name>
<url-pattern>url</url-pattern>
</servlet-mapping>
(1)在@Target中有两个属性,分别为 ElementType.METHOD 和 ElementType.TYPE ,也就是说 @RequestMapping 可以在方法和类的声明中使用;
(2)可以看到注解中的属性除了 name() 返回的字符串,其它的方法均返回数组,也就是可以定义多个属性值,例如 value() 和 path() 都可以同时定义多个字符串值来接收多个URL请求。

7. @Configuration 和 @Bean 注解

@Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。具体解释可见:https://www.cnblogs.com/wuchanming/p/5426746.html 

8. @EnableAutoConfiguration 

作用是从classpath中搜索所有META-INF/spring.factories配置文件,然后将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器
只有spring.boot.enableautoconfiguration为true(默认为true)的时候,才启用自动配置。

9. @ComponentScan

自定扫描路径下边带有@Controller,@Service,@Repository,@Component注解加入spring容器
通过includeFilters加入扫描路径下没有以上注解的类加入spring容器
通过excludeFilters过滤出不用加入spring容器的类。具体参见https://blog.51cto.com/4247649/2118342

10. @SpringBootApplication

@SpringBootApplication=@Configuration+@EnableAutoConfiguration+@ComponentScan

11. @Primary和@Qualifier

使用场景:如果在通过@Autowired自动注入时,注入的接口存在多个实现类且当我们不具体指定哪个实现类时,SpringBoot会报错,此时可以使用@Primary指定一个类为默认偏好(preference)的实现类,在JPA的多数据源实现中就使用到了@Primary。
      /**
* EntityManager profile.
*/
@Primary
@Bean(name = "entityManagerPrimary")
public EntityManager entityManager(EntityManagerFactoryBuilder builder) {
return entityManagerFactoryPrimary(builder).getObject().createEntityManager();
}

使用场景:如果在@Autowired自动注入时有多个候选实现类的Bean,可以通过@Qualifier在自动注入的地方传入一个限定名(也就是类的别名)来选取指定的实现类,此时自动注入的策略就从 byType 转变成 byName,同样在JPA的多数源实现中也使用到了@Qualifier。

 @Configuration
public class DataSourceConfig {
@Bean(name = "primaryDataSource")
@Qualifier("primaryDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
} @Bean(name = "secondaryDataSource")
@Qualifier("secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}

12. @CreatedDate 和 @LastModifiedDate

用处:Spring Data JPA提供了相应的时间注解,一个是更新时间,一个是创建时间。

用法:

(1) 在Application启动类中添加注解@EnableJpaAuditing;

(2) 在实体类上加上注解 @EntityListeners(AuditingEntityListener.class);

(3) 在相应的字段上添加对应的时间注解 @LastModifiedDate 和 @CreatedDate

13. @Slf4j

用它不用每次都写private final Logger logger = LoggerFactory.getLogger(XXX.class);

14. Lombok

使用lombok优雅的编码

⚠️注意:lombok中的@Builder注解默认生成的构造器是“default”的,可以被同package的类调用(default限制不同package类的调用),而我们希望构造器设为private,此时需要用到“@AllArgsConstructor(access = AccessLevel.PRIVATE)”。所以最终写法:

 @Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)

15. URL命名规则

  • URL尽量全部小写,用户方便输入;
  • 不建议驼峰或者下划线_连接,搜索引擎会把下划线自动忽略掉,可以使用中划线‘-’连接,sou;
  • 对于CURD,URL相同,请求方法(get、post、put、delete)不同,也作为不同的接口;
  • URL参数尽量不超过3个;
  • 资源必须采用资源名词复数的形式,比如https://api.github.com/user/emails 

16. URL和URI

URI(Uniform Resource Identifier)字面上的意思是,统一资源标示符
URL(Uniform Resource Locator),统一资源定位符
但是标示是什么意思?定位又是什么意思?
举个简单的栗子

Springboot知识点的更多相关文章

  1. springboot知识点补充(一)

    测试配置 @RunWith(SpringRunner.class) @SpringBootTest @Configuration @ActiveProfiles("test") p ...

  2. springboot 知识点

    ---恢复内容开始--- 1springBoot项目引入方式, 1,继承自父 project (需要没有付项目才能用,一般我们的项目都会有 父 项目 所以 这种方式不推荐 ,记住有这种方式 就可以了) ...

  3. springboot知识点【笔记】

    # **一.**Spring Boot 入门 ## 1.Spring Boot 简介 > 简化Spring应用开发的一个框架:>> 整个Spring技术栈的一个大整合:>> ...

  4. SpringBoot28 RabbitMQ知识点、Docker下载RabbitMQ、SpringBoot整合RabbtiMQ

    1 RabbitMQ知识点 1.1 整体架构图 消息生产者将消息投递到exchange中,exchange会以某种路由机制将生产者投递的消息路由到queue中,消息消费者再从queue中获取消息进行消 ...

  5. springboot整合redis缓存一些知识点

    前言 最近在做智能家居平台,考虑到家居的控制需要快速的响应于是打算使用redis缓存.一方面减少数据库压力另一方面又能提高响应速度.项目中使用的技术栈基本上都是大家熟悉的springboot全家桶,在 ...

  6. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

  7. Spring和Springboot相关知识点整理

    简介 本文主要整理一些Spring & SpringBoot应用时和相关原理的知识点,对于源码不做没有深入的讲解. 1. 思维导图 右键新窗口打开可以放大. 说明 使用@Configurati ...

  8. SpringBoot小知识点

    记录SpringBoot的小知识点 一.在 Spring 上下文刷新之前设置一些自己的环境变量 1.实现 EnvironmentPostProcessor 接口 2.spring.factories ...

  9. SpringBoot(一)-- 知识点介绍

    一.简介 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置.简单来说,它提供了一堆依赖打包,并 ...

随机推荐

  1. 2018-08-14 中文代码之Spring Boot实现简单REST服务

    最终目标详见: 参考MSDN,试搞.NET类库标识符的翻译版 · Issue #54 · program-in-chinese/overview 此文仅为技术探索+原型搭建的第一小步. 源码库: 演示 ...

  2. 2018-08-13 Head First OO分析设计一书略读与例子中文化

    注: 此笔记仅为个人学习此教程的布局和材料组织之用. 如有兴趣请自行详阅. 第一章是以吉他商店的存货系统作例子. 第二章设计有狗洞的门. 第三章对第二章基础上, 更改需求后对应设计. 第四章继续改进此 ...

  3. Kotlin入门(29)任务Runnable

    任务Runnable定义了一个可以独立运行的代码片段,通常用于界面控件的延迟处理,比如有时为了避免同时占用某种资源造成冲突,有时则是为了反复间隔刷新界面从而产生动画效果.运行一个任务也有多种形式,既可 ...

  4. 兼容性问题:backgroud-size支持IE8浏览器的方法

    在工作中碰到一个问题:background-size是css3的新属性,当在IE8及其以下浏览器中不起作用,导致背景图片不能自适应元素的大小? 先看一个小demo: <!DOCTYPE html ...

  5. 转载:量化投资中常用python代码分析(一)

    pandas的IO 量化投资逃不过数据处理,数据处理逃不过数据的读取和存储.一般,最常用的交易数据存储格式是csv,但是csv有一个很大的缺点,就是无论如何,存储起来都是一个文本的格式,例如日期‘20 ...

  6. 被遗弃的depends2.2,替换解决方案——VS命令行

    vs的早期版本提供了depends工具,最新版本是2.2,已经不再更新了,网站是dependencywalker.com. 现在,我们可以使用vs开发人员命令行,dumpbin工具,导出二进制文件的信 ...

  7. 第二篇 Html(13章节)-a标签,img标签,列表,表格

    1. a标签 - 超链接,可以跳转 - 锚  href='#某个标签的ID'    标签的ID不允许重复 <!DOCTYPE html> <html lang="en&qu ...

  8. mysql初始化提示安装perl

    all_db --user=mysql --datadir=/data/mysql", "delta": "0:00:00.222500", &quo ...

  9. Jenkins2.32打包Unity项目的记录

    前言 使用jenkins来打包unity3d的工程. jenkins :2.50 /2.32.3(长期支持版 建议使用此版本) 操作系统:windows 7 x64 sp1 (打包安卓和win) ,m ...

  10. 适合使用并行的一种bfs

    这种写法的bfs和前面的最大区别在于它对队列的处理,之前的简单bfs是每次从队列中取出当前的访问节点后,之后就将它的邻接节点加入到队列中,这样明显不利于并行化, 为此,这里使用了两个队列,第一个队列上 ...