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>

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/pengxiang1998/article/details/105518911