前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring常用注解

Spring常用注解

作者头像
用户5325874
发布2020-01-16 17:18:48
5990
发布2020-01-16 17:18:48
举报

spring开发中常用到的注解

  • @PostConstruct 在bean初始化之后调用方法,可以用@PostConstruct标识该方法
  • @PreDestory 在bean被销毁前调用该方法,可以用@PreDestory标识该方法
  • @ModelAttribute 作用在方法参数上:将之前model中的属性赋值到参数的属性中
  • @RequestBody 将请求体中参数赋值到方法参数(对象)的属性中,用于post请求中。 关于这个注解,需要注意在一个方法中(handler)不能使用两个以上@RequestBody
  • @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;
  • @Scheduled

@Scheduled(cron = "${notice.timed.send.schedule}") 实现配置中心配置时间

spring-mvc

1、使用@Controller注解,必须添加配置: ` <context:component-scan base-package="com.mall.web"/>

代码语言:javascript
复制
    <!-- 处理@Controller的使用前置配置 -->
    <mvc:annotation-driven/>`

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

  • 第一种方式:
代码语言:javascript
复制
<!-- spring MVC的核心就是DispatcherServlet,使用springMVC的第一步就是将下面的servlet放入web.xml
        servlet-name属性非常重要,默认情况下,DispatchServlet会加载这个名字-servlet.xml的文件,如下,就会加载
        dispather-servlet.xml,也是在WEN-INF目录下。
   -->
  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- 设置dispatchservlet的匹配模式,通过把dispatchservlet映射到/,默认servlet会处理所有的请求,包括静态资源 -->
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  • 第二种方式:用于自定义Spring配置文件的名称,则在web.xml文件中,利用org.springframework.web.context.ContextLoaderListener进行配置。ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。详情参照:http://blog.csdn.net/ysughw/article/details/8992322
代码语言:javascript
复制
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

参考: https://www.jianshu.com/p/3944792a5fff

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • spring开发中常用到的注解
  • spring-mvc
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档