spring ioc的简单实例及bean的作用域属性解析

 更新时间:2017年12月26日 15:02:18   作者:等想出来再取  
这篇文章主要介绍了spring ioc的简单实例及bean的作用域属性解析,具有一定借鉴价值,需要的朋友可以参考下

IoC(Inversion if Control)-控制反转是Spring俩大核心技术之一,IoC一般分为俩种类型:依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)

使用示例:

1、新建工程并导入Spring相关jar包。

2、新建数据访问层及业务逻辑层

代码结构:

代码示例:

/**
 * 实体Bean
 * @author BC
 *
 */
public class User {
	private Integer id;
	private String userName;
	private String passWord;
	//get set方法略
}
/**
 * 数据访问层接口
 * @author BC
 *
 */
public interface UserDaoInterface {
	/**查询所有用户信息*/
	public List<User> getUserList();
}
/**
 * 数据访问层实现类
 * @author BC
 *
 */
public class UserDaoImpl implements UserDaoInterface {
	/**模拟数据库数据*/
	private List<User> userList;
	public UserDaoImpl() {
		userList = new ArrayList<User>();
		User u = new User(1, "张三", "123");
		userList.add(u);
		u = new User(2, "李四", "456");
		userList.add(u);
		u = new User(3, "王五", "789");
		userList.add(u);
		u = new User(4, "赵六", "233");
		userList.add(u);
	}
	@Override
	 public List<User> getUserList() {
		return userList;
	}
}
/**
 * 业务逻辑层接口
 * @author BC
 *
 */
public interface UserBizInterface {
	/**查询所有用户信息*/
	public List<User> getUserList();
}
/**
 * 业务逻辑层实现类
 * @author BC
 *
 */
public class UserBizImpl implements UserBizInterface {
	/**使用Spring注入*/
	private UserDaoInterface userDao;
	@Override
	 public List<User> getUserList() {
		return userDao.getUserList();
	}
	/**通过set方法注入,因此需要注入的属性必须设置set方法*/
	public void setUserDao(UserDaoInterface userDao) {
		this.userDao = userDao;
	}
	public UserDaoInterface getUserDao() {
		return userDao;
	}
}

3、编写applicationContext.xml配置文件

表头信息:

<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

配置代码:

 <!-- 数据访问层对象:UserDao -->
 <bean id="userDao" class="com.bc.dao.impl.UserDaoImpl"></bean>
 <!-- 业务逻辑层对象:UserBiz --> 
 <bean id="userBiz" class="com.bc.biz.impl.UserBizImpl">
  <!-- 通过set方法注入数据访问层属性 -->
  <property name="userDao" ref="userDao"/>
 </bean>

测试代码:

public class UserBizTest {
	private ApplicationContext ctx;
	@Before
	 public void load() {
		//读取applicationContext.xml配置文件
		ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
	}
	@Test
	 public void getUserListTest() {
		//创建一个业务逻辑层对象
		UserBizInterface userDao = (UserBizInterface) ctx.getBean("userBiz");
		//调用方法获取用户信息
		List<User> userList = userDao.getUserList();
		//遍历集合
		for (User user : userList) {
			System.out.println(user.getId() + "|" + user.getUserName() + "|" +user.getPassWord());
		}
	}
}

上面的实例代码中,我们使用的是set方法注入,Spring的注入方式有许多种,注入的属性类型也有很多情况,详细请参考:

浅谈spring ioc的注入方式及注入不同的数据类型

关于bean的作用域

scope=”singleton” 默认,表示在Spring容器中仅存在一个共享的Bean实例
scope=”prototype” 每次从容器中都获取一个新的实例
scope=”request” 每次Http请求都会创建一个新的Bean实例
scope=”session” 同一个Http请求共享一个Bean实例
scope=”global session” 同一个全局Session共享一个Bean实例

总结

以上就是本文关于spring ioc的简单实例及bean的作用域属性解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • SpringBoot之HandlerInterceptor拦截器的使用详解

    SpringBoot之HandlerInterceptor拦截器的使用详解

    这篇文章主要介绍了SpringBoot之HandlerInterceptor拦截器的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Java导出txt文件的方法

    Java导出txt文件的方法

    这篇文章主要介绍了Java导出txt文件的方法,实例分析了两种java导出txt文本文件的使用技巧,需要的朋友可以参考下
    2015-05-05
  • Spring中使用ehcache缓存的方法及原理详解

    Spring中使用ehcache缓存的方法及原理详解

    这篇文章主要介绍了Spring中使用ehcache缓存的方法及原理详解,ehcache具有很强的灵活性,提供了LRU、LFU和FIFO缓存淘汰算法,Ehcache 1.2引入了最近最少使用、最久未使用和先进先 出缓存淘汰算法, 构成了完整的缓存淘汰算法,,需要的朋友可以参考下
    2024-01-01
  • Java把多个对象的list的数据合并的方法示例

    Java把多个对象的list的数据合并的方法示例

    在Java中合并多个List可以使用遍历、Stream API或Apache Commons Collections,通过遍历各个List并将元素添加到新List实现合并,Java 8提供了Stream API,使用Stream.of()和flatMap()可以简洁地合并List,文中给出了多种方法示例,需要的朋友可以参考下
    2024-09-09
  • java中final关键字使用示例详解

    java中final关键字使用示例详解

    Java中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使用final关键字的实例
    2014-01-01
  • Spring Cloud Gateway 获取请求体(Request Body)的多种方法

    Spring Cloud Gateway 获取请求体(Request Body)的多种方法

    这篇文章主要介绍了Spring Cloud Gateway 获取请求体(Request Body)的多种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 关于设置Mybatis打印调试sql的两种方式

    关于设置Mybatis打印调试sql的两种方式

    这篇文章主要介绍了关于设置Mybatis打印调试sql的两种方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 基于Spring中各个jar包的作用及依赖(详解)

    基于Spring中各个jar包的作用及依赖(详解)

    下面小编就为大家带来一篇基于Spring中各个jar包的作用及依赖(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • SpringBoot快速整合通用Mapper的示例代码

    SpringBoot快速整合通用Mapper的示例代码

    后端业务开发,每个表都要用到单表的 增删改查 等通用方法,而配置了通用Mapper可以极大的方便使用Mybatis单表的增删改查操作,这篇文章主要介绍了SpringBoot快速整合通用Mapper,需要的朋友可以参考下
    2022-07-07
  • java继承学习之super的用法解析

    java继承学习之super的用法解析

    本文介绍java继承super的用法,Java继承是会用已存在的类的定义作为基础建立新类的技术新类的定义可以增加新的数据或者新的功能,也可以使用父类的功能,但不能选择性的继承父类 这种继承使得复用以前的代码非常容易,能够大大的缩短开发的周期,需要的朋友可以参考下
    2022-02-02

最新评论