一、注解对照表

注解

使用位置

作用

 @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. 数据结构-二叉树(6)哈夫曼树(Huffman树)/最优二叉树

    树的路径长度是从树根到每一个结点的路径长度(经过的边数)之和. n个结点的一般二叉树,为完全二叉树时取最小路径长度PL=0+1+1+2+2+2+2+… 带权路径长度=根结点到任意结点的路径长度*该结点 ...

  2. Public-Key Cryptosystems Based on Composite Degree Residuosity Classes

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. 论文未全部翻译 Abstract. 本文研究了一个新的计算问题,即合数剩余阶问题(Com ...

  3. 【转】camera tuning

    chromatix项目必须包含有效的 ADC image.png filcker: 交流电照明灯发出的光会一定频率的抖动导致sensor图像出现行方向的水波纹,称之为filcker.目前主要的交流电频 ...

  4. 实用教程!SPSSAU验证性因子分析思路总结

    验证性因子分析,是用于测量因子与测量项(量表题项)之间的对应关系是否与研究者预测保持一致的一种研究方法.尽管因子分析适合任何学科使用,但以社会科学居多. 目前有很多软件都可以非常便利地实现验证性因子分 ...

  5. lammps计算的应力的方法

    摘自:http://dxli75.blog.163.com/blog/static/106768289201142893419587/ lammps计算的应力有两种: 一是体系整体的应力状态,通过在t ...

  6. WPF新手快速入门系列 2.绑定

    [概要] 上一章讲了布局,按照市面上的书籍每一本讲的顺序都不一样,本系列是希望大家能快速上手去应对工作需要,所以本章就直接开始讲绑定. 如有学习过程中想交流学习.疑惑解答可以来此QQ群交流:58074 ...

  7. 27倍性能之旅 - 以大底库全库向量召回为例谈Profiling驱动的性能优化

    问题 Problem kNN(k Nearest Neighbor)定义 给定一个查询向量,按照某个选定的准则(如欧式距离),从底库中选择

  8. linux 下分别使用pip2、pip3

    上次切换了Python2和Python3.但是Python3并没有pip,所有在Python3下不能安装包. 下面实现在Python3 下安装pip3 1,首先安装setuptools wget -- ...

  9. DevExpress的WidgetView的使用介绍

    很多程序可能都会有一个首页综合展示系统的相关信息,如汇总信息,图表统计.待办业务.提醒信息等内容,在Web上可能叫做Dashboard仪表板,或者首页页面,不管哪种叫法,都是综合展示一些信息,提供一些 ...

  10. 【JAVA】给大家推荐一道有意思的java测试题。你知道答案吗?

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, QQ986945193 公众号:程序员小冰 public class Test { /** * * ...