zoukankan      html  css  js  c++  java
  • SpringAnnotation注解之@PreDestroy,@PostConstruct,@Scope

    @Scope的使用很简单,直接在类上加上就行

    @PostConstruct:相当于xml配置方式的init-method方法

    @PreDestroy:相当于xml配置方式的destroy-method方法


    例如:userService

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    package com.fz.annotation.service;
     
    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    import javax.annotation.Resource;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    import com.fz.annotation.dao.UserDao;
    import com.fz.xml.entity.User;
     
    @Service("userService")
    @Scope("prototype")
    public class UserService {
        private UserDao userDao;
        public void userAdd(){
            User user = new User();
            user.setUsername("zhangsan");
            user.setPassword("zhangsan");
            userDao.userAdd(user);
        }
        public UserDao getUserDao() {
            return userDao;
        }
        @Resource(name="userDaoImpl")
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
         
        @PostConstruct
        public void init(){
            System.out.println("init...");
        }
        @PreDestroy
        public void destroy(){
            System.out.println("destroy...");
        }
    }

    applicationContext.xml配置很简单:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        <context:annotation-config/>
        <context:component-scan base-package="com.fz.annotation"></context:component-scan>
         
    </beans>

    测试代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Test
    public void getProperties(){
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext_annotation.xml");
        UserService userService = (UserService) ctx.getBean("userService");
        UserService userService1 = (UserService) ctx.getBean("userService");
        userService.userAdd();
        System.out.println(userService == userService1);
        ctx.destroy();
    }

    结果如下:

    可以看出init还是执行了两次,两个对象也不是同一个对象,但是destroy同样还是不执行了。。。。








  • 相关阅读:
    暗影精灵3安装无线网卡驱动(ubuntu16.04)
    装饰器之基本
    pyhton代码规范
    2.线程
    文件拾遗
    闭包函数
    6.文件基本操作
    1.socket网络编程
    9.异常处理
    Python语言规范
  • 原文地址:https://www.cnblogs.com/meet/p/4758204.html
Copyright © 2011-2022 走看看