博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring知识——注解
阅读量:6503 次
发布时间:2019-06-24

本文共 3103 字,大约阅读时间需要 10 分钟。

spring开发中常用到的注解

@PostConstruct

在bean初始化之后调用方法,可以用@PostConstruct标识该方法

@PreDestory

在bean被销毁前调用该方法,可以用@PreDestory标识该方法

@ModelAttribute

作用在方法参数上:将之前model中的属性赋值到参数的属性中

@RequestBody

将请求体中参数赋值到方法参数(对象)的属性中,用于post请求中

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。

这里需要注意的是,如果你使用了@RequestMapping注解,并且没有用@Responsebody,则会报404。因为返回结果被解析成跳转路径,而这条路径根本不存在。

@RequestParam

把url?后面的参数赋值到指定名称的参数上。如果参数不写RequestParam,默认也会从url中相同参数名称获取参数值赋值到对应的变量中。比如有void test(String name),假如url为/app/tesdad?name=huangy,那么就会把huangy赋值给name参数。

@ResponseBody

将方法返回的结果添加到响应体中(不能使用重定向行为 ‘redirect:/xxxx’),返回类型为json

@Component

该注解声明的类,将会添加到容器中,可以通过容器获得

@Service

注解声明的类,将会添加到容器中,可以通过容器获得。假如在一个类上面声明@Service,这个类叫做CustomerService,那么通过ref=’customerService’就可以获得这个bean

@Resource

bean的注入,@Resource按照名称(byName)注入

@Autowire

bean的注入,@Autowire按照类型注入

补充

@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了(这里name指的是bean的id)。@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的id,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。      @Resource装配顺序      1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常      2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常      3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常      4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则则按照类型进行匹配,如果匹配则自动装配;

@Controller

定义一个控制器类的bean

@RestController

1、同样定义一个控制器类,多了一些特征

2、每一个@RequestMapping上默认添加了@ResponseBody
3、支持Rest客户端异步无阻塞

@RequestMapping

1、@RequestMapping映射url到控制器类或者方法上。当@RequestMapping标记在类上面时,方法中@RequestMapping的请求地址都是相对类上的@RequestMapping的请求地址而言的;当Controller上没有@RequestMapping标记,方法上的@RequestMapping都是绝对路径。

2、URI模板:

a、现在有URI模板/test/{variable},假如请求URL为/test/hello,该URL跟模板相匹配,就把{variable}替换成hello    b、@PathVariable:标记一个方法参数,该参数的值将使用URI模板中对应的变量的值来赋值

3、属性:

a、produces : 可以指定返回内容的类型(如application/json),也可以指定返回内容的编码(如charset=UTF-8)    b、consumes : 可以指定提交数据的类型    c、value : 指定url    d、method : 指定HTTP请求方法(如RequestMethod.POST)

@interface

定义一个注解: @interface Name {}

@Rentention

该注解的保留级别(该注解在什么时候是可见的)

@Target

设定注解的使用范围

@Inherited

该如果一个注解被用在A类上,B类继承A类,B类自动继承父类的这个注解

@Value

@Value可以读取配置文件属性的值(包括配置中心的文件)```    @Value("${dubbo.application.name}")    private String applicationName;```

@ExceptionHandler

定义了这个注解的方法,当前类的异常都会被这个方法捕获详细见: https://www.cnblogs.com/shuimuzhushui/p/6791600.html

spring-mvc

1、使用@Controller注解,必须添加配置:

`
`

2、加载spring配置文件的方式:

  • 第一种方式:
dispatcher
org.springframework.web.servlet.DispatcherServlet
1
dispatcher
/
  • 第二种方式:用于自定义Spring配置文件的名称,则在web.xml文件中,利用org.springframework.web.context.ContextLoaderListener进行配置。ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。详情参照:
contextConfigLocation
classpath*:spring/applicationContext.xml
org.springframework.web.context.ContextLoaderListener

参考:

你可能感兴趣的文章
《Python数据科学实践指南》一2.2 字符串
查看>>
《R数据可视化手册》——1.1 安装包
查看>>
《iOS创意程序设计家》——导读
查看>>
spring-aop
查看>>
android RecycleView Adapter简单封装
查看>>
PgSQL · 案例分享 · 递归收敛优化
查看>>
Dart的数据库操作
查看>>
Codeforces 591 B Rebranding【Codeforces Round #327 (Div. 2)】
查看>>
命名难,难于上青天
查看>>
做完和做好不一样
查看>>
APUE读书笔记-05标准输入输出库(7)
查看>>
23 第一周作业
查看>>
DNS解析偶尔延迟
查看>>
iOS打电话,发短信,发邮件,打开网址
查看>>
06-验证码-基本功能实现
查看>>
Java数据结构与算法(六) 希尔排序
查看>>
canvas学习笔记
查看>>
IntelliJ Idea下Go项目开启Debug调试
查看>>
elasticsearch安装步骤
查看>>
PHP获取Cookie模拟登录CURL(转)
查看>>