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. 关于iframe跨域实践

    提要 项目中与到iframe子页面中需要通过top获取在父页面中的全局变量的需求,由于App部署的缘故,导致父页面和iframe子页面分别在不同的端口下,导致iframe跨域现象,通过查阅资料进行问题 ...

  2. Docker & pure-ftpd 快速加建 FTP 服务器

    项目需要进行升级服务,现在需要基于centos 7使用docker来快速打架一个FTP环境来方便本地文件上传. 本次使用的是 pure-ftpd docker镜像,有关镜像使用的详细信息,本人是从 h ...

  3. javascript中(function($){...})(jQuery)写法是什么意思

    这里实际上是匿名函数function(arg){...}这就定义了一个匿名函数,参数为arg 而调用函数 时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:(functi ...

  4. wifi破解基础及工具的使用

    cdlinux学习,WiFi破解 cdlinux下载.vm安装 cdlinux下载 密码:vxao - 注意:cdlinux必须是在连接网卡的情况下,才能使用 水滴的使用 抓包.跑包 选择信号强度高, ...

  5. 洗礼灵魂,修炼python(82)--全栈项目实战篇(10)—— 信用卡+商城项目(模拟京东淘宝)

    本次项目相当于对python基础做总结,常用语法,数组类型,函数,文本操作等等 本项目在博客园里其他开发者也做过,我是稍作修改来的,大体没变的 项目需求: 信用卡+商城: A.信用卡(类似白条/花呗) ...

  6. 一、Tableau基础

    有关函数的官方文档:https://onlinehelp.tableau.com/current/pro/desktop/zh-cn/functions_functions_string.htm 注意 ...

  7. c/c++ 线性栈

    c/c++ 线性栈 线性栈 下面的代码实现了以下功能 函数 功能描述 push 压入 pop 弹出 show_list 打印 clear 移动top指针到栈底 destroy 释放所有内存空间 seq ...

  8. Python爬虫之Urllib库的基本使用

    # get请求 import urllib.request response = urllib.request.urlopen("http://www.baidu.com") pr ...

  9. 【转载】Python中的垃圾回收机制

    GC作为现代编程语言的自动内存管理机制,专注于两件事:1. 找到内存中无用的垃圾资源 2. 清除这些垃圾并把内存让出来给其他对象使用.GC彻底把程序员从资源管理的重担中解放出来,让他们有更多的时间放在 ...

  10. innerHTML的使用

        inerHTML是html标签的属性,成对出现的标签大多数都有这个属性,用来设置或获取位于对象起始和结束标签 内的HTML.(获取HTML当前标签的起始和结束里面的内容)不包括标签本身.   ...