一、注解对照表

注解

使用位置

作用

 @Controller  类名上方  声明此类是一个SpringMVC Controller 对象,处理http请求
 @RequestMapping  类或方法上  用在类上,表示所有响应请求的方法都是以该地址作为父路径
 @ResponseBody  方法上  将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式(Json/xml)后,写入到Response对象的body数据区。
 @RestController  类名上  可代替@ResponseBody 和 @Controller合在一起的作用。但不能返回Jsp和HTML页面了,将方法返回的对象直接在浏览器上展示成json格式。
 @RequestBody  方法参数前  常用来处理Content-Type: application/json, application/xml等,意味着HTTP消息是JSON,需转化为指定类型参数
 @Service  类名上  声明是一个业务处理类(实现类非接口类)
 @Repository  类名上  声明是一个数据库或其他NOSql访问类(实现类非接口类)
 @Component  类名上  声明此类是Spring管理类,常用在无法用@Service、@Repository描述的Spring管理类上,相当于通用的注解
 @Configuration  类名上  声明此类是一个配置类,常与@Bean配合使用
 @Bean  方法名上  声明该方法返回结果是一个Spring容器管理的Bean,包含@PostConstruct和@PreDestory 
 @Qualifier  类名或属性上  为Bean指定名称,随后再通过名字引用Bean
 @Autowired  属性或构造函数参数上  按byType自动注入
 @Resource  类名上  默认按 byName自动注入
 @Value  属性上  用于获取配置文件中的值
 @PathVariable  方法参数前  将URL获取参数,映射到方法参数上
 @RequestParam  方法参数前  获取请求参数的值
 @SpringBootApplication  类名上  复合注解,包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan 这三个注解
 @Transactional  方法或类名前  分为声明式事务管理(基于AOP,使用@Transactional注解)和编程式事务管理(TransactionTemplate)

二.注解用法示例

1.@Controller

用在类名

@Controller
@RequestMapping("/api/v1/user")
public class UserController {}

2.@RequestMapping

用在类名

@Controller
@RequestMapping("/api/v1/user")
public class UserController {}

用在方法名

@RequestMapping(value = "getuser", method = RequestMethod.POST)
public List<User> selectAll() {
return userService.selectAll();
}

3.@ResponseBody

用在方法名上

将返回对象输出到客户端,如果是字符串,直接输出;如果不是,则默认用Jackson序列化成Json字符串输出。

@ResponseBody
public User addUser(@RequestBody User user) {}

该注解将返回类型转换为指定格式,格式由程序控制,格式包括json、text、xml和其他。若转为Json,需要依赖Json解析Jar包。

4. @RestController

用于返回json、text、xml和其他等格式的数据,但不能返回Jsp和HTML页面。

@RestController
@RequestMapping("/api/v1/user")
public class UserController {}

5.@RequestBody

  过使用HandlerAdapter,配置的HttpMessageConverters来将请求内容,转为指定的对象。Spring boot 默认用Jackson来处理反序列化工作。 下面示例是将请求Json参数,利用@RequestBody直接注入到EnterpriseEntity中

@RequestMapping(value = "/enterprise/update", method = RequestMethod.PUT)
public void updateEnterpriseInfo(@RequestBody EnterpriseEntity enterprise) {
}

6.@Service

用在ServiceImpl实现类上,声明一个业务逻辑处理类。

@Service("userService")
public class UserServiceImpl implements UserService {}

7.@Repository

用在daoImpl实现类上,声明一个数据库访问类

@Repository
public class IocDao implements IIocDao{
public void add(){
}
}

8.@Component

如用在Mybatis的Mapper类上

@Component
@Mapper
public interface UserMapper {
int deleteByPrimaryKey(Long userId);
}

9.@Configuration

@Configuration
@EnableCaching
public class RedisConfig {
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
return cacheManager;
}
}

10.@Bean

@Bean(name = "kafkaContainer")
public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
factory.setConcurrency(1);
factory.getContainerProperties().setPollTimeout(5000);
return factory;
}

11.@Qualifier

先指定一个名字:@Qualifier(“primaryDataSource”)

@Autowired
@Qualifier("primaryDataSource")
private DataSource primaryDataSource;

再通过名字:@Qualifier(“primaryDataSource”)引用

@Bean(name = "primaryDataSource", initMethod = "init")
@Qualifier("primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
@Primary
public DataSource primaryDataSource() {
DataSource datasource = DruidDataSourceBuilder.create().build();
return datasource;
}

12.@Autowired

@Autowired
@Qualifier(value = "entityManagerFactoryPrimary")
LocalContainerEntityManagerFactoryBean entityManager;

13.@Resource

配置类:@Component标识这是一个需要注册为Bean的类,注册为Bean以后就可以在Spring容器中通过Resource注入

@Component("jpushConfig")
public class JpushConfig {
@Value("${jpush.appKey}")
private String appkey;
@Value("${jpush.masterSecret}")
private String masterSecret;
@Value("${jpush.liveTime}")
private String liveTime; public String getAppkey() { return appkey;
} public String getMasterSecret() { return masterSecret;
} public void setLiveTime(String liveTime) { this.liveTime = liveTime;
}
}

使用配置:

@Resource
JpushConfig jpushConfig;

14.@Value

properities属性文件中创建键值对

spring.kafka.consumer.topic=test-topic

在Java中将properities属性文件中的值,注入到属性中。

@Value("${spring.kafka.consumer.topic}")
private String topic;

15.@PathVariable

@RequestMapping("/api/{type}")
public String getUser(@PathVariable int type) {}

{type}中的type需要跟参数名统一,若不统一,可用(value = "type")指定:

@RequestMapping("/api/{type}")
public String getUser(@PathVariable(value = "type") int myType) {}

请求示例:http://localhost:8080/User/getUser/123

16.@RequestParam

@Controller
@RequestMapping("/User")
public class HelloWorldController { @RequestMapping("/getUser")
public String getUser(@RequestParam("uid")Integer id, Model model) {
System.out.println("id:"+id);
return "user";
}
}

请求示例:http://localhost:8080/User/getUser?uid=123

Spring Boot学习(四)常用注解的更多相关文章

  1. spring boot的一些常用注解

    spring boot的一些常用注解: 使用@SpringBootApplication注释: 许多Spring Boot开发人员喜欢他们的应用程序使用自动配置,组件扫描,并能够在其“应用程序类”上定 ...

  2. spring boot 学习(三)API注解记录及测试

    spring boot API注解记录及测试 部分注解解析 @Controller : 修饰创建处理 http 处理对象,一般用于页面渲染时使用. @RestController : Json数据交互 ...

  3. Spring boot 学习 四:spring boot 配置文件 application.yml

    一 关于端口: spring boot的默认端口是8080, 如果想更改的话,在配置文件中做如下配置.ServerProperties.class会去读取这个值. server: port: 另外一种 ...

  4. spring boot 学习(四)Druid连接池的使用配置

    Druid介绍 Druid是一个JDBC组件,druid 是阿里开源在 github 上面的数据库连接池,它包括三部分: * DruidDriver 代理Driver,能够提供基于Filter-Cha ...

  5. Spring Boot的27个注解【核心】

    导读[约定大于配置] Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务 ...

  6. Spring Boot入门(四):开发Web Api接口常用注解总结

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...

  7. spring boot 学习(十四)SpringBoot+Redis+SpringSession缓存之实战

    SpringBoot + Redis +SpringSession 缓存之实战 前言 前几天,从师兄那儿了解到EhCache是进程内的缓存框架,虽然它已经提供了集群环境下的缓存同步策略,这种同步仍然需 ...

  8. Solon Web 开发,十四、与Spring、Jsr330的常用注解对比

    Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...

  9. Spring Boot学习笔记2——基本使用之最佳实践[z]

    前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...

  10. Spring Boot学习路线

    Spring Boot 学习路线,本文计划根据作者近几年的工作.学习经验,来分析和制定一个学习使用 Spring Boot技术的步骤路线图. SpringBoot是伴随着Spring4.0诞生的: S ...

随机推荐

  1. 虚拟化技术之kvm虚拟机创建工具qemu-kvm

    在前边的博客中我们介绍了如何创建kvm虚拟机,以及一些常用的工具的介绍和使用,今天我们来了解下kvm原始工具qemu-kvm:为什么说qemu-kvm是一个原始的工具呢,如果你用kvm虚拟机,心细的你 ...

  2. 第3篇 Scrum 冲刺博客

    1.站立会议 照骗 进度 成员 昨日完成任务 今日计划任务 遇到的困难 钟智锋 确定客户端和服务器通信的形式 重新设计项目执行流程 我的规划过于混乱,对应难以同步开发 庄诗楷 绘制棋盘 游戏窗口的制作 ...

  3. 还在问什么是JavaScript构造函数、实例、原型对象以及原型链?看完这篇你就懂

    1概述 ES6, 全称 ECMAScript 6.0 ,2015.06 发版.在ES6之前,对象不是基于类创建的,而是用一种称为构造函数的特殊函数来定义对象和它们的特征. 2构造函数 构造函数是一种特 ...

  4. 2、Entity Framework Core 3.1入门教程-创建数据库和迁移

    本文章是根据 微软MVP solenovex(杨旭)老师的视频教程编写而来,再加上自己的一些理解. 视频教程地址:https://www.bilibili.com/video/BV1xa4y1v7rR ...

  5. Http请求的三个常见问题

    我们做的大多数项目,必不可少的需要向后台发送请求获取数据,常用的http请求就是post请求和get请求 那么引出一个最常见的问题——Q:post请求和get请求有什么区别? A: 从语义上我们可以这 ...

  6. [C#.NET 拾遗补漏]08:强大的LINQ

    大家好,这是 [C#.NET 拾遗补漏] 系列的第 08 篇文章,今天讲 C# 强大的 LINQ 查询.LINQ 是我最喜欢的 C# 语言特性之一. LINQ 是 Language INtegrate ...

  7. 特性预览:Apache 顶级项目 Apache Pulsar 2.6.1 版本

    在正式分享 2.6.1 版本更新细节之前,冉小龙首先为我们分享了两个相关 PIP 的内容. 一个是 PIP-47 中关于「基于时间来进行版本更新」的计划.该 PIP 提出后,从 2.5.0 版本到目前 ...

  8. UNITY3D UGUI学习--canvas

    首先从canvas的参数说起走. Canvas Component是UI布局和渲染的抽象空间,所有的UI元素都必须在此组件之下. Render Mode UI的渲染方式,有三种: Screen Spa ...

  9. 关于`ClawHub的技术分享`公众号

    生命不息,折腾不止! 该公众号的内容大部分为平时学习积累所整理的笔记,包括但不限于源码.原理.经验等. 如果感兴趣,也可以访问clawhub的博客主站https://clawhub.club

  10. P3311 [SDOI2014]数数 AC自动机+数位DP

    题意 给定一个正整数N和n个模式串,问不大于N的数字中有多少个不包含任意模式串,输出对\(1e^9+7\)取模后的答案. 解题思路 把所有模式串都加入AC自动机,然后跑数位DP就好了.需要注意的是,这 ...