Spring常用注解之一
Spring中的常用注解
@Component
把普通 pojo 实例化到 Spring 容器中,相当于配置文件中的
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component 来标注这个类
这个简单的注解表明该类会作为组件类,并告知 Spring 要为这个类创建 bean
用法:@Component("")
双引号内的内容为 bean 的 id ,不写的话默认为类名首字母小写
@Named
另外一种给 bean 命名的方式,Java依赖注入规范(Java Dependency Injection)中所提供的注解来为 bean 设置 ID
@Configuration
表明这个类是一个配置类,可以启动组件扫描,用来将带有@Bean 的实体进行实例化 bean 等
@Configuration 可理解为用 Spring 的时候 xml 里面的
标签,作用为配置 Spring 容器(应用上下文)
用法:将@Configuration 标注在名为 xxxConfig 的配置类上
@ComponentScan
包扫描,默认会扫描与配置类相同的包
用法:@ComponentScan(basePackages = “”)双引号内写要扫描的包的全路径,如果只有一个包 basePackages 可省略
如果要扫描多个包,只需要将 basePackages 属性设置为要扫描包的一个数组即可
@ComponentScan(basePackages = {“edu.swpu.service”, “edu.swpu.controller”})
除了将包设置为简单的 String 类型之外,@ComponentScan 还提供了另外一种方法,那就是将指定为包中,所包含的类或接口,可以考虑在包中创建一个用来进行扫描的空标记接口(marker interface)
@ComponentScan(basePackagesClasses = {Service.class, Controller.class})
@Autowired
自动注入,将一个 bean 中所依赖的其他类型的组件 bean 注入到该 bean 中
用法:@Autowired 注解不仅能够用在构造器上,还能用在属性的 Setter 方法上,甚至可以直接写在引用类型的成员变量上
注意:如果没有匹配的 bean 那么在应用上下文创建的时候,Spring 会抛出一个异常,为了避免异常出现,可以将@Autowird 的 required 属性设置为 false,但是需要谨慎对待,如果在你的代码中没有进行 null 检查的话,这个处于未装配状态的属性有可能会出现 NullPointerException
@Inject
@Inject 注解来源于 Java 依赖注入规范,该规范同时还为我们定义了@Named 注解
@Bean
@Bean 注解会告诉 Spring 这个方法将会返回一个对象,该对象要注册为 Spring 应用上下文中的 bean,方法体中包含了最终产生 bean 实例的逻辑
默认情况下,bean 的 ID 与带有@Bean 注解的方法名是一样的,如果你想为其设置成一个不同的名字的话,那么可以重命名该方法,也可以通过 name 属性指定一个不同的名字
用法:@Bean 表示将方法的返回值注册到 Spring 容器中,id 默认为方法名
@Bean(name = “”) 表示将该方法的返回值注册到 Spring 容器中,id 为 name 属性的值
@Import
将另一个配置类导入到标注了该注解的配置类中
用法:@Import(xxxConfig.class)
@ImportResource
将写在 xxx.xml 中的配置文件导入到标注到该注解的配置类中
用法:@ImpoerResource(“classpath:xxx.xml”) 将在根类路径下的xxx.xml文件中的配置导入到标注了该注解的类中
@Profile
指定某个 bean 属于哪个profile
用法:@Profile(“dev”)
@ActiveProfiles
指定运行测试时要激活哪个profile
用法:@ActiveProfiles(“dev”)
@Conditional
条件化配置,如果给定的条件结果为 true,就会创建这个 bean,否则的话,这个 bean 会被忽略
用法:Conditional(xxx.class)
@Primary
在注入的时候,将可选 bean 中的某一个设为首选(primary)的 bean
用法:@Primary 能够与@Component 组合用在组件扫描的 bean上,也可以与@Bean 组合用在 Java 配置的 bean 声明中。
@Qualifier
限定符,指定想要注入进去的是哪个 bean
用法:@Qualifier(“iceCream”) 表示将 id 为 iceCream 的 bean 注入进来
@Scope
选择 bean 创建的作用域
用法:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Scope注解中有一个属性,proxyMode,它被设置成了 ScopedProxyMode.INTERFACES ,这个属性解决了将会话或请求作用域的 bean 注入到单例 bean 中所遇到的问题
如果 bean 累心是具体类的话,我们必须将 proxyMode 属性设置为 ScopedProxyMode.TARGET_CLASS,以此来表明要以生成目标类扩展的方式创建代理
@PropertySource
引用类路径中一个文件,这个属性会被加载到 Spring 的 Environment 中,稍后可以从这里检索属性
用法:@PropertySource(“app.properties”) 表示引用了类路径中一个名为 app.properties 的文件
@Value
将我们配置文件的属性读出来
用法:有@Value(“${}”)和@Value(“#{}”)两种方式
@Aspect
该注解表明被标注的类不仅仅是一个 POJO,还是一个切面
@After
通知方法会在目标方法返回或抛出异常后调用
@AfterReturning
通知方法会在目标方法返回后调用
@AfterThrowing
通知方法会在目标方法抛出异常后调用
@Around
通知方法会将目标方法封装起来
@Before
通知方法会在目标方法调用之前执行
@Pointcut
定义切点,为@Pointcut 切点设置的值是一个切点表达式
用法:
public class Audience {
@Pointcut("execution(** concert.Performance.perform(..))")
public void performance() {}
@Before("performance()")
public void silenceCellPhones() {
System.out.println("Silencing cell phones");
}
@Before("performance()")
public void takeSeats() {
System.out.println("Taking seats");
}
@AfterReturning("performance()")
public void applause() {
System.out.println("CLAP CLAP CLAP!!!");
}
@AfterThrowing("performance()")
public void demandRefund() {
System.out.println("Demanding a refund");
}
}
@EnableAspectJAutoProxy
在配置类上标注该注解,启用自动代理功能
@DeclareParents
将 Encoreable 接口引入到 Performance bean 中
value 属性指定了哪种类型的 bean 要引入该接口
defauleImpl 属性指定了为引入功能提供实现的类
@DeclareParents 注解所标注的静态属性指明了要引入了接口
Spring MVC中的常用注解
@EnableWebMvc
在 Spring MVC 配置类上标注该注解,表示启用 Spring MVC
@Controller郑州人流医院哪家好 http://www.zhongyuan120.com/
@Controller 是一个构造型(stereotype)注解,它基于@Component 注解
用法:标注在在 xxxcontroller 类上,表示该类为 Spring MVC 控制器,并作为组件扫描到 Spring 容器中
@RequestMapping
将请求的 URL 映射到整个类或某个特定的方法上
用法:@RequestMapping("/")
表示将以 / 开头的请求都映射到标注了该注解的类或方法上
当控制器在类级别上添加@RequestMapping 注解会应用到控制器的所有控制器方法上。处理器方法上的@RequestMapping 注解会对类级别上的@RequestMapping 的声明进行补充
@RequestMapping 注解的 value 属性能够接受一个 String 类型的数组
@RequestParam
将请求参数绑定到你控制器的方法参数上(是Spring MVC 中接收普通参数的注解)
用法:标注在方法的参数前面,将请求中的参数与方法参数绑定,如果这些参数在请求中不存在的话,就使用默认值,@RequestParam 注解的 defaultValue 属性可以完成这项任务
@PathVariable
将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)
用法:@RequestMapping(value=”user/{id}/{name}”)
请求路径:http://localhost:8080/user/1/james
将 1 和 james 绑定到标注了该注解的方法的参数中
如果@PathVariable 中没有 value 属性的话,它会假设占位符的名称与方法的参数名相同
@RequestPart
@RequestPart 这个注解用在 multipart/form-data 表单提交请求的方法上,支持的请求方法的方式MultipartFile,属于 Spring 的 MultipartResolver 类,这个请求是通过http协议传输的
@ResponseStatus
将异常映射为 HTTP 状态码
用法:标注在异常类上,@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = “xxx Not Found”)
@ControllerAdvice
控制器通知(controller advice)是任意带有@ControllerAdvice 注解的类,这个类会包含一个或多个如下类型的方法
@ExceptionHandler
标注在异常处理类上,来处理指定的异常
用法:@ExceptionHandler(xxx.class)
表示处理xxx异常
@InitBinder
给 Binder 做初始化,被此注解标注的方法可以对 WebDataBinder 初始化,webDataBinder 是用于表单到方法的数据绑定的
@ModelAttribute
当同一个 controller 中有任意一个方法被@ModelAttribute 注解标记,页面请求只要进入这个控制器,不管请求那个方法,均会先执行被@ModelAttribute 标记的方法,所以我们可以用@ModelAttribute 注解的方法做一些初始化操作
Spring常用注解之一的更多相关文章
- Spring系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- Spring常用注解介绍【经典总结】
Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ...
- Spring常用注解总结
转载自:https://www.cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点 ...
- Spring注解 系列之Spring常用注解总结
参考:Spring系列之Spring常用注解总结 (1) Resource 默认是byName的方式进行bean配置,@AutoWired默认是按照byType的方式进行装配bean的:(2)Comp ...
- Spring系列之Spring常用注解总结 转载
Spring系列之Spring常用注解总结 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.x ...
- spring常用注解笔记
spring常用注解解释: 1. Mybatis的映射文件xxxMapper.xml中resultMap标签的作用 resultMap标签是为了映射select查询出来结果的集合,其主要 作用是将实体 ...
- SpringBoot+Spring常用注解总结
为什么要写这篇文章? 最近看到网上有一篇关于 SpringBoot 常用注解的文章被转载的比较多,我看了文章内容之后属实觉得质量有点低,并且有点会误导没有太多实际使用经验的人(这些人又占据了大多数). ...
- Spring常用注解汇总
本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component- ...
- Spring常用注解,自动扫描装配Bean
1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...
- 【SSM 2】spring常用注解
声明:以下观点,纯依据个人目前的经验和理解,有不当之处,多指教! 一.基本概述 注解(Annotation):也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举 ...
随机推荐
- 201871010133-赵永军《面向对象程序设计(java)》第八周学习总结
201871010133-赵永军<面向对象程序设计(java)>第八周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这 ...
- python字典基本操作
字典是python中五中基本数据类型之一,虽然它的赋值稍微麻烦点,但用起来真的是很方便.它用键值对来存放数据,所谓键值对,就是一个键,对应一个值,如果后面对前面的键再次赋值,第一次的值就被覆盖掉.像是 ...
- Django简介(MVC、MTV)
Django简介 MVC Model(模型)- 应用程序中处理数据逻辑部分且与数据库交互,用于存取数据的部分 View(视图)- 用于处理后的数据界面展示,且视图通常是由模型数据创建的,是用户看到并与 ...
- 两个开源的 Spring Boot + Vue 前后端分离项目
折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...
- 阿里云重置CentOS的root默认密码
问题 今天使用阿里云开了一个云服务器,系统为 CentOS ,远程连接登录时不知道默认root密码 解决方法 在 控制台-实例-操作 中选择 更多-密码/秘钥-重置实例密码 即可
- stm32环境搭建
软件下载:https://pan.baidu.com/s/1rat9Vnm 第一部分:软件安装 1.点击安装mdk514.exe,一路next就可以了 2.使用管理员身份打开软件,点击File,进到l ...
- js中的require、define、export、import【转】
原文链接:https://www.cnblogs.com/libin-1/p/7127481.html 为什么有模块概念 理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块. ...
- 第四次实验报告:使用Packet Tracer理解RIP路由协议
目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 3.2 配置参数 3.3 测试网络连通性 3.4 理解RIP路由表建立和更新 4. 理解RIP消息传得慢 5. 拓展 1 实 ...
- 第21课 shared_ptr共享型智能指针
一. shared_ptr的基本用法 (一)与unique_ptr的比较 比较 shared_ptr unique_ptr 备注 初始化 ①shared_ptr<T> sp; sp.res ...
- CUDA编程学习笔记1
CUDA编程模型是一个异构模型,需要CPU和GPU协同工作. host和device host和device是两个重要的概念 host指代CPU及其内存 device指代GPU及其内存 __globa ...