zoukankan      html  css  js  c++  java
  • Spring注解:@Resource、@PreConstruct、@PreDestroy、@Component

    要使用Spring的注解,必须在XML文件中配置有属性,告诉人家你要使用注解,Spring容器才会去加载类上的注解:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
               http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-2.5.xsd
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
        
        <context:annotation-config />
        
    </beans>

     @Resource注解:

      作用:自动装配属性值

      位置:属性的setter方法上

    example:

    public class UserService {
        private UserDao userDao;
        
        public User get() {
            return userDao.get();
        } 
        
        public UserDao getUserDao() {
            return userDao;
        }
        
        @Resource(name="userDao")
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
    }

    被Resource注解标记的setter方法,Spring容器就会帮你自动装配,这个注解有一个name属性,设置的就是你的要注入那个bean的名字,若你没有填写这个name属性,Spring将自动帮你处理,用方法名去掉set去查找这个bean或者参数名去查找,这也说明了Resource注解是遵循by-name语法的

    @PreConstruct和@PreDestroy

      解释:@PreConstruct对应bean的初始化方法,@PreDestroy对应bean的销毁方法

      作用:通过这两个注解可以让我们很好的观察着bean的声明周期情况

      位置:放在对应的方法上

    public class UserService {
        @PostConstruct
        public void init() {
            System.out.println("UserService is initing");
        }
        
        @PreDestroy
        public void destroy() {
            System.out.println("UserService is destroying");
            }
            ......      
    }

    @Component和它同类型注解

      作用:这个注解最大的作用就是自动检测组件,也就是代替了XML中对bean的配置,和它有着相同作用的注解还有@Service、@Repository、@Controller,这些注解在现在还没有什么明显的区别,但是在以后可能在MVC模式上有着很大的不同,可能对应着不同的层,这些纯属个人的猜测。

      位置:bean类上

      提醒:在使用这个注解的时候,还要在XML上配置扫描的属性,告诉人家你的bean在那些包上

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="
               http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-2.5.xsd
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
        
        <context:annotation-config />
        
        <context:component-scan base-package="com.xujianguo" />
        
    </beans>

    example:

    @Component
    public class UserService {
       //代码
    }

     其实这个Component注解也是有个name属性的,跟XML中定义bean的id一样,如果你有天就按照name的值来,如果没有的话就按照开头小写的非限定类名作为bean的id

  • 相关阅读:
    进制
    流程控制
    运算符
    格式化输出
    数据结构-树的遍历
    A1004 Counting Leaves (30分)
    A1106 Lowest Price in Supply Chain (25分)
    A1094 The Largest Generation (25分)
    A1090 Highest Price in Supply Chain (25分)
    A1079 Total Sales of Supply Chain (25分)
  • 原文地址:https://www.cnblogs.com/rayguo/p/3473346.html
Copyright © 2011-2022 走看看