SSH之Spring中bean的作用域 及自動裝配

默認狀態,共享實例

在沒有設置bean的scope屬性,這個bean的作用域是屬於共享實例的,所謂的共享實例是指的所有的bean對象引用的都是同一個bean.。默認scope的值爲singleton缺省

Boy boy1=(Boy)ctx.getBean("boy1", Boy.class);
		Boy boy2=ctx.getBean("boy1", Boy.class);
		System.out.println(boy1.equals(boy2));           //true

非共享實例

每次產生的bean 對象都是不同的,scope的值爲prototype
修改測試:將bean的作用域設置爲 prototype

 <bean id="boy1" class="spring.bean.Boy" scope="prototype"><!-- 引用其他的bean對象 -->
     <property name="name" ><value>鵬翔</value></property>
     <property name="girl" ref="girl4"></property><!-- 他要找的對象是在這個表裏註冊的對象   ref  來使用-->
     
     </bean>

測試結果:

Boy boy1=(Boy)ctx.getBean("boy1", Boy.class);
		Boy boy2=ctx.getBean("boy1", Boy.class);
		System.out.println(boy1.equals(boy2));

在這裏插入圖片描述
此時的作用域爲非共享,故其不同

其餘還有request與session,這是在web項目中使用的。

如何在三層架構中使用Spring

數據庫訪問層

package spring.dao;

public class UserInfoDao {
	public void add(){
		System.out.println("這是數據庫訪問類");
	}
}

服務層

package spring.service;

import spring.dao.UserInfoDao;

public class UserInfoService {
	private UserInfoDao userinfodao;
	//生成了get與set方法
	public UserInfoDao getUserinfodao() {
		return userinfodao;
	}

	public void setUserinfodao(UserInfoDao userinfodao) {
		this.userinfodao = userinfodao;
	}

	public void addservice(){
		System.out.println("服務層調用數據庫訪問層");
		userinfodao.add();
		//服務層調用數據庫訪問層
	}
}

action層

package spring.action;

import spring.service.UserInfoService;

public class userinfoaction {
	private UserInfoService userservice;
	
	public UserInfoService getUserservice() {
		return userservice;
	}

	public void setUserservice(UserInfoService userservice) {
		this.userservice = userservice;
	}

	public void addaction(){
		System.out.println("這是action層,調用業務層方法");
		userservice.addservice();
		
	}
}

配置文件:`此即爲自動裝配

 <!-- 首先配置dao層 -- 次即爲自動裝配,找屬性名和bean名都一樣的,然後自動裝配到屬性裏,因此取名字一定要有意義>
     <bean id="userinfodao" class="spring.dao.UserInfoDao" autowire="byName">	</bean>
     <!-- 配置service層 -->
     <bean id="userservice" class="spring.service.UserInfoService" autowire="byName"></bean>
     <!-- 配置action層 -->
     <bean id="userinfoaction" class="spring.action.userinfoaction" autowire="byName"></bean>

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章