004_Bean标签
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标签的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 002_SpringIOC
- 下一篇: 005_Spring的属性注入