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 ...
随机推荐
- Vue管理系统前端系列四组件拆分封装
目录 组件封装 首页布局拆分后结构 拆分后代码 状态管理中添加 app 模块 组件封装 在上一篇记录中,首页中有太多的代码,为了避免代码的臃肿,需要对主要的功能模块拆分,来让代码看起来更简洁,且能进行 ...
- 操作系统-I/O(2)设备的分配
作业执行前对设备提出申请时,指定某台具体的物理设备会让设备分配变得简单,但如果所指定设备出现故障,即便计算机系统中有同类设备也不能运行 设备独立性:用户通常不指定物理设备,而是指定逻辑设备,使得用户作 ...
- 必看!2020最新黑马JAVA 学习路线
https://www.fang1688.cn/2020/08/24/%e5%bf%85%e7%9c%8b%ef%bc%81java-%e5%ad%a6%e4%b9%a0%e8%b7%af%e7%ba ...
- 对接接口时,组织参数json出现的问题
在进行对接第三方接口时,进行参数组装成json的过程中出现参数传递格式错误以及json格式化错误. 在拼接json时,如果json中有对象,则以map的方式组装好所有参数.最后map转成json,不然 ...
- PJSIP开发指南-第二章
一.模块 2.1 模块框架 模块框架的主要作用是在应用程序组件之间分发SIP消息,PJSIP的所有的组件,包括dialog和transaction都是以模块方式实现的,没有模块,核心协议栈将不知 ...
- 使用Android的硬件缩放技术优化执行效率
Unity3D研究院之使用Android的硬件缩放技术优化执行效率 http://www.xuanyusong.com/archives/3205 Android中GLSurfaceView在横竖屏切 ...
- Lua 5.3注册C++类相关API
int luaL_newmetatable (lua_State *L, const char *tname); 如果注册表中不存在名为tname的表,则在注册表中创建一个名为tname的表,并将这个 ...
- [第二届全国中学生网络安全竞赛]bypass
前几天拿到了线下赛的源码,做做看.这道主要是命令执行的黑名单绕过 先看看给出的代码: <?php highlight_file(__FILE__); error_reporting(0); $b ...
- [AngstromCTF 2019]Cookie Cutter
最近看到了一个国外高中生的CTF比赛,翻了一下往年的例题,发现有一道关于jwt session伪造的题比较有意思,记录一下 题目简介中给出了我们题目的地址和后端处理的源码,看看源码先代码审计一下: c ...
- 记录call、apply、bind的源码
记录一下call.apply.bind的源码,然后从根本上明白其用法. 都知道call.apply与bind的用法,call(this,...arguments).apply(this,[argume ...