Spring 注解功能介绍

来源:互联网 发布:java sftp 遍历文件夹 编辑:程序博客网 时间:2024/06/05 14:18
Spring注解:
    使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包)。
    1.@Resource 默认按名称装配,当找不到与名称匹配的bean才会按类型装配。
        1.@Resource的装配顺序:
            1).@Resource后面没有任何内容,默认通过name属性去匹配bean,找不到再按type去匹配;
            2).指定了name或者type则根据指定的类型去匹配bean;
            3).指定了name和type则根据指定的name和type去匹配bean,任何一个不匹配都将报错;
        2.@Autowired和@Resource两个注解的区别:
            1).@Autowired默认按照byType方式进行bean匹配,@Resource默认按照byName方式进行bean匹配;
            2).@Autowired是Spring的注解,@Resource是J2EE的注解,这个看一下导入注解的时候这两个注解的包名就一清二楚了;
            Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。
    2.@Autowired 默认按类型装配,如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如(3):
        1.@Autowired注解要去寻找的是一个Bean,当指定的Bean定义不存在时,自然就不是一个Bean,Spring容器也就找不到;
          如果属性找不到时不想让Spring容器抛出异常,而是显示null,可以将@Autowired注解的required属性设置为false即可:
    3.@Autowired @Qualifier("personDaoBean") 存在多个实例配合使用
    4.@Repository 用于标注数据访问组件,即DAO组件;
    5.@Scope 用于指定scope作用域的(用在类上):
        1.singleton:默认单例模式,即:Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义
          相匹配,则只会返回bean的同一实例,一个容器对应一个bean;
        2.prototype 表示多例:每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,
          相当与一个new的操作;
        3.request 表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效;
        4.session 表示作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效;
        5.global session 作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义:
                 Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享;
                 在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内;
                 如果在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。
    6.@Service 用于标注业务层组件;
        1. 默认指定的bean中的id是"zoo",即类名且首字母小写;
        2. 如果想改变这种形式,可以指定bean在Spring容器中的名字: @Service("Zoo");
    7.@Controller 用于标注控制层组件(如struts中的action);
    8.@Component 所有受Spring管理组件的通用形式,@Component注解可以放在类的头上,@Component不推荐使用;
    9.@Repository 对应数据访问层Bean:
        1.@Repository(value="userDao"):注解是告诉Spring,让Spring创建一个名字叫"userDao"的UserDaoImpl实例,当Service需要
          使用Spring创建的名字叫"userDao"的UserDaoImpl实例时,就可以使用@Resource(name = "userDao")注解告诉Spring,
          Spring把创建好的userDao注入给Service即可。
        2.@Resource(name = "userDao"):注入userDao,从数据库中根据用户Id取出指定用户时需要用到;
    10.@Configuration 把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean;
    11.@Lazy(true) 表示延迟初始化;
    12.@PostConstruct 用于指定初始化方法(用在方法上);
    13.@PreDestory 用于指定销毁方法(用在方法上);
    14.@DependsOn 定义Bean初始化及销毁时的顺序;
    15.@Primary 自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否则将抛出异常;
    16.@PostConstruct 初始化注解;
    17.@PreDestroy 摧毁注解 默认 单例  启动就加载;
    18.@Async 异步方法调用;
    19.@RequestMapping:RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上;
    20.@ResponseBody:该注解用于将Controller的方法返回的对象,返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
原创粉丝点击