• 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

  • 相关阅读:
    Delegate(委托与事件)
    eclipse2020-06创建属于自己的JSP模板(图文)
    eclipse没有新建web项目的解决问题
    my97datepicker实现日期改变立刻触发函数
    jetty启动项目后js修改后无法保存
    js连续的日期判断,判断相差几天
    同步和异步
    面试题
    MYSQL 数据库名、表名、字段名查询
    Spring-MVC
  • 原文地址:https://www.cnblogs.com/rayguo/p/3473346.html
Copyright © 2020-2023  润新知