@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同样还是不执行了。。。。

最新文章

  1. Distributed4:SQL Server 分布式数据库性能测试
  2. 工作中用到的oracle字符串分割整理
  3. easyfinding(codevs 3280)
  4. 【转载】linux内核笔记之高端内存映射
  5. 【Todo】Java要学的一些比较好的框架和系统
  6. JSP基础学习(二)
  7. Qt--将Qt 动态链接生成的exe及依赖dll打包方法
  8. SQL SERVER的检查点checkpoint
  9. 介绍Office 365 中文用户社区 4.0
  10. Myeclipse使用git
  11. mip-link 组件功能升级说明
  12. RLException: XXX is neither a launch file in package XXX nor is XXX a launch file name问题解决
  13. zookeeper资料
  14. SQL SERVER数据库级的触发器
  15. ansible和python的zabbix_api批量添加rsync服务的监控
  16. android boot.img unpack pack
  17. poj1106 Transmitters
  18. git push.default 几种设置笔记
  19. Bigbluebutton中文乱码问题
  20. scrapy-splash抓取动态数据例子十三

热门文章

  1. lightGallery 一个视屏不播放 解决方法
  2. js实现excel的解析
  3. 【Python】模块
  4. Django学习笔记之URL标签的使用
  5. Activiti:创建activiti工程
  6. obtainBuffer timed out (is the CPU pegged?)
  7. ubuntu 18.04 64bit下如何安装python开发工具jupyter
  8. Java GC垃圾回收
  9. Task作为返回值以及Task&lt;TResult&gt;作为返回值
  10. 《用 Python 学微积分》笔记 1