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 ...
随机推荐
- 第2章 RDD编程(2.3)
第2章 RDD编程(2.3) 2.3 TransFormation 基本RDD Pair类型RDD (伪集合操作 交.并.补.笛卡尔积都支持) 2.3.1 map(func) 返回一个新的RDD,该 ...
- magento paypal测试配置
1.登录https://developer.paypal.com 2.在https://developer.paypal.com/developer/accounts/中创建
- IdentityServer4网页(单点)登陆入门
前言 本篇说说ids中的网页登陆以及单点登陆的大致原理,主要是以基本跑通为目的,下一篇开始会详细说明集成ids网页登陆原理. 最好先熟悉以下知识: asp.net core asp.net core的 ...
- Java多线程_Semaphore信号量
概念: Semaphore是信号量,又称为信号灯,它可以控制某个共享资源可被同时访问的次数,即可以维护当前访问某一共享资源的线程个数,并提供了同步机制.当Semaphore的个数变成1时,即代表只允许 ...
- 教你如何在linux操作系统下玩【俄罗斯方块】高清+语音教程
主讲人小冰QQ:986945193 新浪微博:http://weibo.com/mcxiaobing 百度贴吧:忆驹家族小冰 腾讯微博:http://t.qq.com/q986945193 高清视频 ...
- LaTeX分分钟上手【转】
原文地址:<LaTeX新人教程,30分钟从完全陌生到基本入门> 需要说明的几点: 1.文中说用XeTex,但是我的总是失败(出现!undefined control sequence.), ...
- php反序列化总结与学习
基础知识: 1.php类与对象 2.魔术函数 3.序列化方法 类与对象 <?php class test{ public $var = "hello world"; publ ...
- Azure Blob (三)参数设置说明
一,引言 上一篇将 Azure Blob 存储的时候,有使用到一个 .NET Core Web 项目,通过代码的方式进行操作 Azure Blob 的数据,接着上一篇的内容,今天继续看一下代码,具体 ...
- Oracle12C配置对外访问
Oracle12C配置对外访问 第一步: 开放端口或者关闭防火墙 第二步: 配置Oracle net manager打开Net manager 修改为共享服务器 第三步: 配置连接数打开Databas ...
- Kibana的安装
了解ELK Kibana 安装 Kibana的版本要和ES的一致 下载完毕后解压 这个解压就有点慢了 ELK的东西基本都是开箱即用的 解压后的目录 进入bin 双击启动kibana.bat 哎:启动从 ...