SpringAnnotation注解之@PreDestroy,@PostConstruct,@Scope
2024-10-21 12:59:02
@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同样还是不执行了。。。。
最新文章
- Distributed4:SQL Server 分布式数据库性能测试
- 工作中用到的oracle字符串分割整理
- easyfinding(codevs 3280)
- 【转载】linux内核笔记之高端内存映射
- 【Todo】Java要学的一些比较好的框架和系统
- JSP基础学习(二)
- Qt--将Qt 动态链接生成的exe及依赖dll打包方法
- SQL SERVER的检查点checkpoint
- 介绍Office 365 中文用户社区 4.0
- Myeclipse使用git
- mip-link 组件功能升级说明
- RLException: XXX is neither a launch file in package XXX nor is XXX a launch file name问题解决
- zookeeper资料
- SQL SERVER数据库级的触发器
- ansible和python的zabbix_api批量添加rsync服务的监控
- android boot.img unpack pack
- poj1106 Transmitters
- git push.default 几种设置笔记
- Bigbluebutton中文乱码问题
- scrapy-splash抓取动态数据例子十三