Spring Boot学习(四)常用注解
一、注解对照表
|
注解 |
使用位置 |
作用 |
| @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学习(四)常用注解的更多相关文章
- spring boot的一些常用注解
spring boot的一些常用注解: 使用@SpringBootApplication注释: 许多Spring Boot开发人员喜欢他们的应用程序使用自动配置,组件扫描,并能够在其“应用程序类”上定 ...
- spring boot 学习(三)API注解记录及测试
spring boot API注解记录及测试 部分注解解析 @Controller : 修饰创建处理 http 处理对象,一般用于页面渲染时使用. @RestController : Json数据交互 ...
- Spring boot 学习 四:spring boot 配置文件 application.yml
一 关于端口: spring boot的默认端口是8080, 如果想更改的话,在配置文件中做如下配置.ServerProperties.class会去读取这个值. server: port: 另外一种 ...
- spring boot 学习(四)Druid连接池的使用配置
Druid介绍 Druid是一个JDBC组件,druid 是阿里开源在 github 上面的数据库连接池,它包括三部分: * DruidDriver 代理Driver,能够提供基于Filter-Cha ...
- Spring Boot的27个注解【核心】
导读[约定大于配置] Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务 ...
- Spring Boot入门(四):开发Web Api接口常用注解总结
本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 在程序员的日常工作中,Web开发应该是占比很重的一部分,至少我工作以来,开发的系统基本都是Web端访问的 ...
- spring boot 学习(十四)SpringBoot+Redis+SpringSession缓存之实战
SpringBoot + Redis +SpringSession 缓存之实战 前言 前几天,从师兄那儿了解到EhCache是进程内的缓存框架,虽然它已经提供了集群环境下的缓存同步策略,这种同步仍然需 ...
- Solon Web 开发,十四、与Spring、Jsr330的常用注解对比
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- Spring Boot学习笔记2——基本使用之最佳实践[z]
前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...
- Spring Boot学习路线
Spring Boot 学习路线,本文计划根据作者近几年的工作.学习经验,来分析和制定一个学习使用 Spring Boot技术的步骤路线图. SpringBoot是伴随着Spring4.0诞生的: S ...
随机推荐
- Locust性能测试1--简介安装及基本使用
1. Locust简介 Locust是易于使用的分布式用户负载测试工具,旨在对网站(或其他系统)进行负载测试,并弄清一个系统可以处理多少个并发用户,Locust翻译过来是蝗虫的意思,在测试期间,意在一 ...
- Java数据结构——树、二叉树的理论知识汇总
通用树的理论知识 一.树的定义 由一个或多个(n>=0)节点组成的有限集合T,有且仅有一个节点称为根(root),当n>1时,其7余的节点为m(m>=0)个互不相交的有限集合T1,T ...
- Hadoop上小文件如何存储?
Block是文件块,HDFS中是以Block为单位进行文件的管理的,一个文件可能有多个块,每个块默认是3个副本,这些块分别存储在不同机器上.块与文件之前的映射关系会定时上报Namenode.HDFS中 ...
- EventLoop-浏览器篇2
最近又碰到了event loop问题,之前研究的实在是浅显(https://www.cnblogs.com/zx0423/p/12641637.html)所以今天主要讲述promise的链式调用,as ...
- Ubuntu 16.04 安装CP210x,CH340驱动
CH340 https://github.com/juliagoda/CH341SER CP210x 因为源码版本不是linux-source-4.15.0-91-generic,导致error,一个 ...
- miniapp基础
文件目录 component 公共组件 img 图片 libs 插件,外部引入 pages 页面 utils 封装公共方法 wxParse html转wxml-->插件 app.js 公共逻辑方 ...
- oa项目面试准备
熟悉项目在ssm框架下的编程流程,了解mysql html spring springmvc mybatis技术.了解过springboot编程. 在上个寒假跟着培训机构用springboot框架编写 ...
- Visual Studio Installer闪退问题解决方法
Visual Studio 2019安装推荐的方式是通过官方给的Installer进行的(2017也是同样方法),但是有时会出现在”即将完成…一切即将准备就绪“这个界面闪退的问题,导致软件的安装.卸载 ...
- Python基本
Python基本规则 1.面向对象的跨平台的编程语言 2.文件类型是.py, 3.一个文件是一个模块module,运行整个文件 4.不支持非英文字符,区分大小写 5.一行是一条语句,多条语句写一行用; ...
- Spring Cloud:Consul基础知识
一.基本概念 Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go开发. 它提供微服务系统中的服务治理.配置中心.控制总线等功能. 服务发现:提供HTTP和DNS两种发 ...