SpringBoot常用注解整理
@SpringBootApplication
定义在main方法入口类处,用于启动sping boot应用项目
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {
/**
* Exclude specific auto-configuration classes such that they will never be applied.
* @return the classes to exclude
*/
Class<?>[] exclude() default {};
}
@EnableAutoConfiguration 让spring boot根据类路径中的jar包依赖当前项目进行自动配置 在src/main/resources的META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
若有多个自动配置,用“,”隔开
@ImportResource
加载XML文件,一般是放在启动main类上
@ImportResource("classpath*:/spring/*.xml") 单个
@ImportResource({"classpath*:/spring/1.xml","classpath*:/spring/2.xml"}) 多个
@Value
application.properties定义属性,直接使用@Value注入即可
public class A{
@Value("${push.start:0}") 如果缺失,默认值为0
private Long id;
}
@ConfigurationProperties(prefix="person")
可以新建一个properties文件,ConfigurationProperties的属性prefix指定properties的配置的前缀,通过location指定properties文件的位置
@ConfigurationProperties(prefix="person")
public class PersonProperties {
private String name ;
private int age;
}
@EnableConfigurationProperties
用 @EnableConfigurationProperties注解使 @ConfigurationProperties生效,并从IOC容器中获取bean
相关博客:https://blog.csdn.net/u010502101/article/details/78758330
@RestController
组合@Controller和@ResponseBody,当你开发一个和页面交互数据的控制时,比如bbs-web的api接口需要此注解
@RequestMapping("/api2/copper")
用来映射web请求(访问路径和参数)、处理类和方法,可以注解在类或方法上。注解在方法上的路径会继承注解在类上的路径。
produces属性: 定制返回的response的媒体类型和字符集,或需返回值是json对象
@RequestMapping(value="/api2/copper",produces="application/json;charset=UTF-8",method = RequestMethod.POST)
@RequestParam
获取request请求的参数值
public List<CopperVO> getOpList(HttpServletRequest request,
@RequestParam(value = "pageIndex", required = false) Integer pageIndex,
@RequestParam(value = "pageSize", required = false) Integer pageSize) {
}
@ResponseBody
支持将返回值放在response体内,而不是返回一个页面。比如Ajax接口,可以用此注解返回数据而不是页面。此注解可以放置在返回值前或方法前。
另一个玩法,可以不用@ResponseBody。
继承FastJsonHttpMessageConverter类并对writeInternal方法扩展,在spring响应结果时,再次拦截、加工结果
// stringResult: json返回结果
//HttpOutputMessage outputMessage
byte[] payload = stringResult.getBytes();
outputMessage.getHeaders().setContentType(META_TYPE);
outputMessage.getHeaders().setContentLength(payload.length);
outputMessage.getBody().write(payload);
outputMessage.getBody().flush();
@Bean
@Bean(name="bean的名字",initMethod="初始化时调用方法名字",destroyMethod="close")
定义在方法上,在容器内初始化一个bean实例类
@Bean(destroyMethod="close")
@ConditionalOnMissingBean
public PersonService registryService() {
return new PersonService();
}
@Service
用于标注业务层组件
@Controller
用于标注控制层组件(如struts中的action)
@Repository
用于标注数据访问组件,即DAO组件
@Component
泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
@PostConstruct
spring容器初始化时,要执行该方法
@PostConstruct
public void init() {
}
@PathVariable
用来获得请求url中的动态参数
@Controller
public class TestController {
@RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET)
public String getLogin(@PathVariable("userId") String userId,
@PathVariable("roleId") String roleId){
System.out.println("User Id : " + userId);
System.out.println("Role Id : " + roleId);
return "hello";
}
}
@ComponentScan
注解会告知Spring扫描指定的包来初始化Spring
@ComponentScan(basePackages = "com.bbs.xx")
@EnableZuulProxy
路由网关的主要目的是为了让所有的微服务对外只有一个接口,我们只需访问一个网关地址,即可由网关将所有的请求代理到不同的服务中。Spring Cloud是通过Zuul来实现的,支持自动路由映射到在Eureka Server上注册的服务。Spring Cloud提供了注解@EnableZuulProxy来启用路由代理
@Autowired
在默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个。当找不到一个匹配的 Bean 时,Spring 容器将抛出 BeanCreationException 异常,并指出必须至少拥有一个匹配的 Bean
当不能确定 Spring 容器中一定拥有某个类的 Bean 时,可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false),这等于告诉 Spring: 在找不到匹配 Bean 时也不报错
@Autowired注解注入map、list与@Qualifier
博客地址:https://blog.csdn.net/ethunsex/article/details/66475792
@Configuration
@Configuration("name")//表示这是一个配置信息类,可以给这个配置类也起一个名称
@ComponentScan("spring4")//类似于xml中的<context:component-scan base-package="spring4"/>
public class Config {
@Autowired//自动注入,如果容器中有多个符合的bean时,需要进一步明确
@Qualifier("compent")//进一步指明注入bean名称为compent的bean
private Compent compent;
@Bean//类似于xml中的<bean id="newbean" class="spring4.Compent"/>
public Compent newbean(){
return new Compent();
}
}
@Import(Config1.class)
导入Config1配置类里实例化的bean
@Configuration
public class CDConfig {
@Bean // 将SgtPeppers注册为 SpringContext中的bean
public CompactDisc compactDisc() {
return new CompactDisc(); // CompactDisc类型的
}
}
@Configuration
@Import(CDConfig.class) //导入CDConfig的配置
public class CDPlayerConfig {
@Bean(name = "cDPlayer")
public CDPlayer cdPlayer(CompactDisc compactDisc) {
// 这里会注入CompactDisc类型的bean
// 这里注入的这个bean是CDConfig.class中的CompactDisc类型的那个bean
return new CDPlayer(compactDisc);
}
}
@Order
@Order(1),值越小优先级超高,越先运行
@ConditionalOnExpression
@Configuration
@ConditionalOnExpression("${enabled:false}")
public class BigpipeConfiguration {
@Bean
public OrderMessageMonitor orderMessageMonitor(ConfigContext configContext) {
return new OrderMessageMonitor(configContext);
}
}
开关为true的时候才实例化bean
@ConditionalOnProperty
这个注解能够控制某个 @Configuration 是否生效。具体操作是通过其两个属性name以及havingValue来实现的,其中name用来从application.properties中读取某个属性值,如果该值为空,则返回false;如果值不为空,则将该值与havingValue指定的值进行比较,如果一样则返回true;否则返回false。如果返回值为false,则该configuration不生效;为true则生效
博客地址:https://blog.csdn.net/dalangzhonghangxing/article/details/78420057
@ConditionalOnClass
该注解的参数对应的类必须存在,否则不解析该注解修饰的配置类
@Configuration
@ConditionalOnClass({Gson.class})
public class GsonAutoConfiguration {
public GsonAutoConfiguration() {
}
@Bean
@ConditionalOnMissingBean
public Gson gson() {
return new Gson();
}
}
@ConditionalOnMisssingClass({ApplicationManager.class})
如果存在它修饰的类的bean,则不需要再创建这个bean
@ConditionOnMissingBean(name = "example")
表示如果name为“example”的bean存在,该注解修饰的代码块不执行
SpringBoot常用注解整理的更多相关文章
- Spring SpringMVC SpringBoot SpringCloud 注解整理大全
Spring SpringMVC SpringBoot SpringCloud 注解整理 才开的博客所以放了一篇以前整理的文档,如果有需要添加修改的地方欢迎指正,我会修改的φ(๑˃∀˂๑)♪ Spri ...
- SpringBoot常用注解大全
常用注解概览 这里整理了一张SpringBoot常用注解的思维导图,本文主要讲解这些注解的用法. 组件相关注解 @ComponentScan 默认扫描当前包及其子包下面被@component,@Con ...
- SpringBoot 常用注解(持续更新)
SpringBoot 常用注解 @SpringBootApplication @Bean @ComponentScan @ControllerAdvice @ExceptionHandler @Res ...
- spring 以及 spring mvc 中常用注解整理
spring 以及 spring mvc 中常用注解整理 @RequestMapping(映射路径) @Autowired(注入 bean 对象) 例如: @Autowired private Bas ...
- SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置
一.SpringBoot常用注解二.SpringBoot自动配置机制SpringBoot版本:1.5.13.RELEASE 对应官方文档链接:https://docs.spring.io/spring ...
- 接近8000字的Spring/SpringBoot常用注解总结!安排!
0.前言 大家好,我是 Guide 哥!这是我的 221 篇优质原创文章.如需转载,请在文首注明地址,蟹蟹! 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide:http ...
- Spring/SpringBoot常用注解总结
转自:[Guide哥] 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使 ...
- SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解
SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...
- 菜鸟的springboot常用注解总结
菜鸟的springboot常用注解总结 0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用 ...
- SpringBoot常用注解的介绍及使用 - 转载
常用注解 @springBootApplication 系统启动类注解,此注解是个组合注解,包括了:@SpringBootConfiguration,@EnableAutoConfiguration, ...
随机推荐
- 【Azure 环境】中国区Azure是否可以根据资源组的模板,生成一个可视化的架构图呢?
问题描述 这是一个国际版链接(https://docs.microsoft.com/en-us/answers/questions/370410/how-to-generate-architectur ...
- 什么是Redis持久化?
Redis持久化指的是将内存中的数据同步到硬盘文件,并在redis重新启动的时候将数据备份到硬盘上,从而保证数据的安全性.通过持久化, Redis可以在系统关闭时将数据保存到硬盘上,避免了数据丢失的风 ...
- wsl使用记录
# wsl使用记录 安装 直接参考微软官方文档使用 WSL 在 Windows 上安装 Linux ubuntu可用发行版安装 https://ubuntu.com/wsl 访问 方式一:在资源管理器 ...
- MES集成警报灯系统,Http远程控制系统设计
核心功能设计 警报灯实机演示:https://www.bilibili.com/video/BV1294y1M7f3?p=2 接受服务器发送http·post请求远程控制警报灯,可接入MES等系统. ...
- Navicat Premium15 解决只能显示前1000条记录问题
Navicat Premium15 解决只能显示前1000条记录问题 最近使用Navicat Premium15图形化界面操作MySQL的数据库,发现在超过1461条记录的表里,只能显示前1000条, ...
- stm32 文件系统数据读写源码解析
一 概念 fatfs文件系统在文件读写中不可或却.熟悉和深入理解是一个不可或缺的前提. 这里面需要先明确几个概念:文件open的属性,这个非常重要.可以并列使用. 二 源码解析 A 写入数据: i ...
- ble无线智能工牌解决方案技术解析
场景需求 在无线智能工牌领域,团队做了几个实际场景的解决方案之后,积累了一些行业需求经验和技术经验.这里做一个总结,算是一种沉淀吧.场景一:居家养老,医护和护工人员定期上门服务,根据工作时长来发工资 ...
- springboot增加slf4j
参考:https://blog.csdn.net/qq_27706119/article/details/104977666(主要) https://www.liaoxuefeng.com/wiki/ ...
- linux命令行下使用代理
有两种方法: 1.curl -x <proxy_ip>:<proxy_port> <real_website> 举例:curl -x 12.99.109.52:80 ...
- MediaCodec硬解流程
一 MediaCodec概述 MediaCodec是Android 4.1(api 16)版本引入的低层编解码接口,同时支持音视频的编码和解码.通常与MediaExtractor.MediaMuxer ...