1. <bean>标签的id和name的配置

1.1. id: 使用了约束中的唯一约束。里面不能出现特殊字符的。

1.2. name: 没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)。里面可以出现特殊字符。

2. Bean的生命周期的配置

2.1. init-method: Bean被初始化的时候执行的方法。

2.2. destroy-method: Bean被销毁的时候执行的方法(Bean是单例创建, 工厂关闭)。

3. Bean的作用范围scope的配置

3.1. singleton: 默认的作用范围, Spring会采用单例模式创建这个对象。

3.2. prototype: 多例模式。

3.3. request: 应用在web项目中, Spring创建这个类的对象以后, 将这个对象存入到request范围中。

3.4. session: 应用在web项目中, Spring创建这个类的对象以后, 将这个对象存入到session范围中。

3.5. globalsession: 应用在web项目中, 必须在porlet环境下使用。但是如果没有这种环境, 相当于session。

4. Bean标签例子

4.1. 新建一个名为SpringBeanTag的Java项目, 拷入Spring相关包

4.2. 新建UserDaoImpl.java

package com.lywgames.dao.impl;public class UserDaoImpl {public UserDaoImpl() {System.out.println("UserDaoImpl实例化构造函数。");}public void init() {System.out.println("UserDaoImpl初始化了。");}public void login() {System.out.println("用户登录成功。");}public void destroy() {System.out.println("UserDaoImpl销毁了。");}
}

4.3. 新建UserAddressDaoImpl.java

package com.lywgames.dao.impl;public class UserAddressDaoImpl {public UserAddressDaoImpl() {System.out.println("UserAddressDaoImpl实例化构造函数。");}public void init() {System.out.println("UserAddressDaoImpl初始化了。");}public void add() {System.out.println("添加用户收获地址成功。");}public void destroy() {System.out.println("UserAddressDaoImpl销毁了。");}
}

4.4. 新建Test.java

package com.lywgames.beantag;import java.util.Timer;
import java.util.TimerTask;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.lywgames.dao.impl.UserAddressDaoImpl;
import com.lywgames.dao.impl.UserDaoImpl;public class Test {public static void main(String[] args) {// 类路径加载配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Timer timer = new Timer();// 设定指定的时间time, 此处为2000毫秒timer.schedule(new TimerTask() {public void run() {System.out.println("----------2秒后----------");UserDaoImpl userDao1 = (UserDaoImpl) context.getBean("userDao");UserDaoImpl userDao2 = (UserDaoImpl) context.getBean("userDao");userDao1.login();userDao2.login();}}, 2000);// 设定指定的时间time, 此处为5000毫秒timer.schedule(new TimerTask() {public void run() {System.out.println("----------3秒后----------");UserAddressDaoImpl userAddressDao1 = (UserAddressDaoImpl) context.getBean("userAddressDao");UserAddressDaoImpl userAddressDao2 = (UserAddressDaoImpl) context.getBean("userAddressDao");userAddressDao1.add();userAddressDao2.add();}}, 5000);// 设定指定的时间time, 此处为10000毫秒timer.schedule(new TimerTask() {public void run() {System.out.println("----------5秒后----------");context.close();System.exit(-1);}}, 10000);while (true) {}}
}

4.5. 在src目录下创建applicationContext.xml

4.6. 运行项目, 一加载applicationContext.xml文件, 就创建了和初始化了UserDaoImpl这个单例模式的类实例。2秒后, 我们获取了2次id为userDao这个Bean, 并没有再次给我们创建实例, 说明单例模式类, 在加载applicationContext.xml文件时就会创建实例, 之后获取的都是同一实例。再过3秒, 我们获取了2次id为userAddressDao这个Bean, 给我们创建了2实例, 并调用了初始化接口, 说明多例模式的类, 每获取一次Bean, 就会创建一个实例。再过5秒, 我们销毁了应用程序上下文, 只有单例模式的类调用了销毁方法。

004_Bean标签相关推荐

  1. Go 知识点(18)— 条件编译(编译标签、文件后缀)

    1. 条件编译 Go 能根据所处环境选择对应的源码进行编译.让编译器只对满足条件的代码进行编译,将不满足条件的代码舍弃,这就叫做条件编译. 在 Go 中,也称之为 Build Constraints ...

  2. Git 常用操作(2)- 创建标签

    1. 列出标签 在 Git 中列出已有的标签是非常简单直观的.只需要输入 git tag: $ git tag v0.1 v1.3 2. 创建标签 Git 使用两种主要类型的标签:轻量标签(light ...

  3. Docker 入门系列(2)- Docker 镜像, 免 sudo 使用 docker 命令、获取查看、修改镜像标签、查找删除创建镜像、导入导出镜像

    1. 免 sudo 使用 docker 命令 如果还没有 docker group 就添加一个 sudo groupadd docker 将用户加入该 group 内 sudo gpasswd -a ...

  4. JSTL标签库学习笔记

    JSTL概述 apache的东西,依赖于EL 使用jstl需要导入jstl.jar包 标签库 core 核心标签库 fmt 格式化标签库 sql 数据库标签库,过时 xml xml标签库,过时 JST ...

  5. jquery过滤HTML标签方法

    //过滤HTML标签 function removeHTMLTag(str) {str = str.replace(/<\/?[^>]*>/g, ''); //去除HTML tags ...

  6. BCELoss BCEWithLogitsLoss 多标签损失函数

    BCELoss 在图片多标签分类时,如果3张图片分3类,会输出一个3*3的矩阵. 先用Sigmoid给这些值都搞到0~1之间: 假设Target是: emmm应该是我上面每次都保留4位小数,算到最后误 ...

  7. xgboost lightgbm catboost 多分类 多标签

    xgboost 与 lightgbm 官方均支持多分类任务,但不直接支持多标签分类任务,实现多标签任务的方法之一是结合sklearn 提供的 multiclass 子类,如OneVsRestClass ...

  8. G6实现标签拖动连线画流程图

    需求描述 列出所有的task标签,拖动task标签在一旁画流程图,打包task的任务名及id和任务的执行流程以json的格式发给后端. 技术栈 G6,vue,h5自带的draggable实现拖动.也稍 ...

  9. 语义分割改进:通过视频传播和标签松弛

    语义分割改进:通过视频传播和标签松弛 Improving Semantic Segmentation via Video Propagation and Label Relaxation 论文地址:h ...

最新文章

  1. matlab 数据集制作,机器学习数据集制作与划分MATLAB实现
  2. MACE(2)-----模型编译
  3. POJ 放苹果问题(递归)
  4. iptables删除所有规则_如何解决iptables删除命令中遇到的问题
  5. JRebel : java.lang.OutOfMemoryError: PermGen space 异常
  6. mysql 取 浮点运算_mysql 浮点型运算误差原因分析及解决方法
  7. Win10卸载python总是提示error2503失败各种解决办法
  8. 【转载】windows跳板机配置远程桌面连接
  9. 如何在Linux中使用history命令
  10. springboot整合Mybatis例子
  11. java中一个数轮流除去所有数_Java实现A、B两人轮流从盒中取球,取出球的数目必须是:1,3,7或者8个...
  12. Handlebars 和 angularjs 之间的区别
  13. ASP.NET Web API实践系列09,在Fiddler和控制台中模拟GET和POST请求
  14. 成绩排序(一)c++
  15. Halcon学习---毛刺凸点检测
  16. 【教男朋友用python做计量】03.利用python进行假设检验(1)
  17. 【对讲机的那点事】对讲机电池、充电器使用说明须知
  18. 软件公司 sun公司 Oracle公司
  19. 利用mybatis拦截器注解处理sql
  20. 飞行员兄弟 Java版

热门文章

  1. centos 安装 py pyhs2
  2. 关于规则引擎一些基本理论的积累
  3. 【CSS】CSS前期回顾(2)
  4. 互联网运营期产品评审杂思,互联网营销
  5. 保护DNS对数字网络安全越来越重要
  6. WM有约II(二):持续改进
  7. html 页面中的 base href 和 target
  8. Android学习——自定义控件(二)
  9. 领域驱动设计系列文章汇总
  10. zabbix监控系统客户端安装