zoukankan      html  css  js  c++  java
  • spring注解总结

                  • @Controller 表示 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,表示某类是一个控制器组件

                  • @Service 表示负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写,用于标注业务层组件
                  • @Autowired 见下面引用

                  • @RequestMapping请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。
                  • @RequestParam用于将请求参数区数据映射到功能处理方法的参数上
                  • @ModelAttribute在Spring MVC里,@ModelAttribute通常使用在Controller方法的参数注解中,用于解释model entity,但同时,也可以放在方法注解里。如果把@ModelAttribute放在方法的注解上时,代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法
                  • @Cacheable注解可以用在方法或者类级别上,当它用于方法级别的时候,这个方法的返回值
    将具有缓存特性,这个方法的返回值应该被缓存;当应用在类级别的时候,这个类的所有方法的返回值都都将被缓存.

                  • @CacheFlush声明一个方法是清空的触发器(要配合缓存处理器使用)
                  • @Resource 见下面引用
                  • @PostConstruct
                 • @PreDestroy

    {@PostConstruct 和@PreDestroy
    • @PostConstruct
    在方法上加上注解@PostConstruct ,这个方法就会在Bean 初始化之后被Spring 容器执 行
    (注:Bean 初始化包括,实例化Bean ,并装配Bean 的属性(依赖注入))。
    • @PreDestroy
    在方法上加上注解@PreDestroy ,这个方法就会在Bean 被销毁前被Spring 容器执行。}

                  @Repository用于标注数据访问组件,即DAO组件
                  @Component (不推荐使用) 泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
                  @Scope定义一个Bean 的作用范围

          @Scope中可以指定如下值:
           singleton:定义bean的范围为每个spring容器一个实例(默认值)
           prototype:定义bean可以被多次实例化(使用一次就创建一次)
           request:定义bean的范围是http请求(springMVC中有效)
           session:定义bean的范围是http会话(springMVC中有效)
           global-session:定义bean的范围是全局http会话(portlet中有效)

                 • @SessionAttributes

    • 说明
    Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,
    以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。
    这一功能是通过类定义处标注 @SessionAttributes 注解来实现的。
    @SessionAttributes 只能声明在类上,而不能声明在方法上。
    • 例如
    @SessionAttributes("currUser") // 将ModelMap 中属性名为currUser 的属性
    @SessionAttributes({"attr1","attr2"})
    @SessionAttributes(types = User.class)
    @SessionAttributes(types = {User.class,Dept.class})
    @SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})

                  • @InitBinder

    如果希望某个属性编辑器仅作用于特定的 Controller ,
    可以在 Controller 中定义一个标注 @InitBinder 注解的方法,
    可以在该方法中向 Controller 了注册若干个属性编辑器
                  • @Required

    @ Required 负责检查一个bean在初始化时其声明的 set方法是否被执行, 当某个被标注了 @Required 的 Setter 方法没有被调用,则 Spring 在解析的时候会抛出异常,以提醒开发者对相应属性进行设置。 @Required 注解只能标注在 Setter 方法之上。因为依赖注入的本质是检查 Setter 方法是否被调用了,而不是真的去检查属性是否赋值了以及赋了什么样的值。如果将该注解标注在非 setXxxx() 类型的方法则被忽略
                  • @qualifier

    [1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
    2、@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

    Java代码 收藏代码

    1. @Autowired() @Qualifier("baseDao")    
    2. private BaseDao baseDao;   

    3、@Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,
    如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

    Java代码 收藏代码

    1. @Resource(name="baseDao")    
    2. private BaseDao baseDao;   

    我喜欢用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就比较优雅。-----引用:http://bhdweb.iteye.com/blog/1663907]

  • 相关阅读:
    # codeforces 1199 D. Welfare State(思维+dp)
    # codeforces 1245 A. A. Good ol' Numbers Coloring(数学)
    # codeforces 1272 F. Two Bracket Sequences(三维dp + bfs)
    关于MySQL无法启动 ERROR 2003 (HY000)
    PAT 甲级测试题目 -- 1002 A+B for Polynomials
    PAT 甲级测试题目 -- 1001 A+B Format
    Flask 中接收 web 端 JSON 的小例子
    一些工具
    MySql的一些常见问题(Windows 和 Ubuntu 下)
    Python学习笔记
  • 原文地址:https://www.cnblogs.com/lizhaowen/p/6054397.html
Copyright © 2011-2022 走看看