`
chinrui
  • 浏览: 97680 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Spring IOC XML Configuration

阅读更多
Spring Note

Spring Introdution
引入相关的包

  • ----spring-context-3.2.1.RELEASE.jar
  • ----spring-beans-3.2.1.RELEASE.jar
  • ----spring-core-3.2.1.RELEASE.jar
  • ----spring-expression-3.2.1.RELEASE.jar
  • ----commons-logging-1.1.2.jar

UserDAOImpl类:
package com.edu.hpu.impl;

import com.edu.hpu.dao.UserDAO;
import com.edu.hpu.model.User;

public class UserDAOImpl implements UserDAO {

	public void save(User user) {
		System.out.println("user saved!");
	}
	
}

UserService类:
package com.edu.hpu.service;

import com.edu.hpu.dao.UserDAO;
import com.edu.hpu.model.User;

public class UserService {

	private UserDAO userDAO;
	
	public void save(User user) {
		userDAO.save(user);
	}

	public UserDAO getUserDAO() {
		return userDAO;
	}

	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
}

beans.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="u" class="com.edu.hpu.impl.UserDAOImpl"></bean>

  <bean id="userService" class="com.edu.hpu.service.UserService">
    <property name="userDAO" ref="u" />
  </bean>
</beans>

测试类:
package com.edu.hpu.sevice;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.edu.hpu.model.User;
import com.edu.hpu.service.UserService;

public class TestUser {

	@Test
	public void testSave() {
		ApplicationContext acx = new ClassPathXmlApplicationContext("
beans.xml");
		
		UserService service = (UserService)acx.getBean("userService");
		User u = new User();
		service.save(u);
	}
	
}

注入的方式大致有三种,上面是Setter Injection
  • ----Setter Injection(重要)
  • ----Constructor Injection(不重要)
  • ----Interface Injection(可以忘记)

下面以Constructor Injection为例子进行注入:
给UserService类添加Constructor方法:
public UserService(UserDAO userDAO) {
	super();
	this.userDAO = userDAO;
}

在beans.xml里面配置Constructor Injection:
<bean id="userService" class="com.edu.hpu.service.UserService">
  <constructor-arg>
  	<ref bean="u"/>
  </constructor-arg>
</bean>

配置bean的时候,属性名称id也可以使用name代替,但是name里面不能加入特殊字符
<bean name="u" class="com.edu.hpu.impl.UserDAOImpl"></bean>

简单属性的注入
在UserDAOImpl类里面添加属性daoID , daoStatus,并添加相应的getter,setter 方法
在beans.xml里面进行简单属性的配置:
<bean name="u" class="com.edu.hpu.impl.UserDAOImpl">
	<property name="daoID" value="1" />
	<property name="daoStatus" value="run" />
</bean>

bean的生存范围
the Spring Framework supports five scopes, three of which are available only if you use a web-aware ApplicationContext.
scope : singleton,prototype,request,session,global session
singleton是默认的,而后面的三种,只有使用web-aware Application时才会起作用
<bean id="userService" class="com.hpu.service.UserService" scope="prototype">

集合注入(Collection Injection)
在UserDAOImpl类里面添加三个集合属性,并设定getter与setter方法:
  • private List<String> lists;
  • private Set<String> sets;
  • private Map<String , String> maps;

在beans.xml里面进行集合注入的配置:
<bean name="u" class="com.edu.hpu.impl.UserDAOImpl">
	<property name="lists">
		<list>
			<value>1</value>
			<value>2</value>
		</list>
	</property>
	<property name="sets" >
		<set>
			<value>1</value>
			<value>2</value>
			<value>3</value>
		</set>
	</property>
	<property name="maps">
		<map>
			<entry key="1" value="1"></entry>
			<entry key="2" value="2"></entry>
			<entry key="3" value="3"></entry>
		</map>
	</property>
</bean>

自动装配(autowire)
装配方式有四种:no , byName , byType , construtor
<bean id="userService" class="com.hpu.service.UserService" autowire="byName">
</bean> <!-- 找出beans.xml里面与该类里面属性名一样的bean进行装配 -->
<bean id="userService" class="com.hpu.service.UserService" autowire="byName">
</bean> <!-- 找出beans.xml里面与该类里面属性的类型一样的bean进行装配 -->

bean的生命周期
在UserService类里面,加入init(),destroy()方法,在beans.xml里面配置如下:
<bean id="userService" class="com.edu.hpu.service.UserService" 
		autowire="byType" init-method="init" destroy-method="destroy">
</bean>

注意:init-method , destroy-method 不要和scope=”prototype”一起使用。
本文所述十分简略,若要知道详细操作可参考spring所提供的官方文档。
分享到:
评论

相关推荐

    springIoc实现原理

    **Spring Ioc 实现原理详解** Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由...

    spring ioc思维导图源文件

    - **XML配置**:早期Spring主要通过XML文件定义Bean及其依赖,如`&lt;bean&gt;`标签用于定义一个Bean,`&lt;property&gt;`标签用于设置属性值。 - **注解配置**:随着Java注解的发展,Spring引入了@Component、@Service、@...

    Spring IOC容器实现分析.pdf 下载

    2. Java配置:Spring 3.0引入了@Configuration和@Bean注解,允许用Java代码来配置Bean,更直观且易于测试。 3. 注解驱动:通过@Component、@Service、@Repository和@Controller等注解标记Bean,@Autowired自动注入...

    springioc的详细讲解

    7. **资源加载**:Spring容器可以从不同的来源加载Bean定义,如XML文件、Java配置类、@Configuration注解的类,甚至是从类路径、URL等位置动态加载。 8. **事件传播**:Spring容器支持事件监听机制,允许Bean之间...

    模拟spring ioc过程

    在Spring框架中,IOC(Inversion of Control,控制反转)是一种设计原则,它将对象的创建和管理职责从应用代码中分离出来,交由框架来处理。这样,开发者可以更专注于业务逻辑,而不是对象的生命周期。AOP(Aspect ...

    SpringIOC原理实现

    每个Bean都在配置文件(如XML、Java注解或@Configuration类)中定义,包括它的类型、初始化方法、属性值以及与其他Bean的依赖关系。Spring容器根据这些配置信息创建并管理Bean实例。 4. **Excel导入示例**:假设...

    Spring IOC 笔记

    Java 配置类则使用 `@Configuration` 和 `@Bean` 注解来替代 XML 配置。 ### Bean 的生命周期 Spring 容器管理 Bean 的完整生命周期,包括初始化、活跃(使用)和销毁三个阶段。初始化阶段可以执行初始化方法(如 `...

    Spring-IOC实现

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交由Spring容器处理,使得开发者可以更专注于业务逻辑的编写,而不是对象的生命周期管理。下面,我们将深入探讨Spring...

    Java进阶之SpringIoC应用共18页.pdf.zi

    在“Java进阶之SpringIoC应用共18页.pdf”文档中,可能会涵盖以下几个关键知识点: 1. **Spring容器初始化**:Spring容器的启动和初始化过程,包括如何通过XML配置文件或Java配置类加载bean定义。 2. **Bean的生命...

    基于Maven构建的Spring IoC源码实例

    3. **Spring IoC容器**:理解Spring IoC容器如何加载bean定义,如通过XML配置文件或者使用Java配置类来定义bean及其属性。 4. **依赖注入**:深入学习Spring的依赖注入方式,包括构造器注入、setter方法注入、接口...

    springioc的搭建和配置

    ### Spring IoC 搭建与配置详解 #### 一、Spring IoC 概述 Spring 是一个分层的 Java SE/EE 轻量级开源框架,它为 Java 应用提供了广泛的解决方案,覆盖了从表现层到业务逻辑层再到持久层。Spring 的核心优势之一...

    02Spring IOC.pdf

    除了XML配置的方式,Spring还提供了注解驱动和Java配置类的方式来配置IOC容器。使用注解(比如@Component、@Service、@Repository和@Controlle)可以简化配置,使得类的定义和依赖注入更加直观。使用Java配置类,则...

    Spring的IoC实现案例

    在本文中,我们将深入探讨如何使用Spring的Inversion of Control(IoC)容器来实现一个具体的案例:控制打印机(Printer)类与不同类型的纸张(Paper)类的交互。Spring的IoC允许我们解耦组件,使代码更加灵活且易于...

    spring ioc全jar包

    Spring还提供了`@Configuration`和`@Bean`注解,可以用来创建Java配置类,替代XML配置文件,使得配置更加灵活和类型安全。 此外,Spring的IOC容器支持多种扩展功能,如AOP(面向切面编程)和事务管理,这些都是...

    《partner4java 讲述Spring入门》之第一步:Spring概述与Spring IoC

    《Spring入门:Spring概述与Spring IoC》是针对初学者的一篇教程,旨在引导开发者进入Spring框架的世界。本文将深入探讨Spring的核心概念,特别是Spring的Inversion of Control(IoC,控制反转)特性,以及如何在...

    Spring4 IOC 示例源码

    Spring4 IOC(Inversion of Control,控制反转)是Spring框架的核心特性之一,它极大地简化了Java应用程序的开发。在这个示例源码中,我们可以深入理解并学习如何在实际项目中运用Spring的IOC容器来管理对象的生命...

    Spring IoC源码分析1

    Spring 框架的核心特性之一是Inversion of Control(IoC),也被称为依赖注入(Dependency Injection,DI)。IoC使得应用程序中的对象不再负责创建和管理它们的依赖对象,而是将这个责任交给了一个外部的容器,即...

    Spring IOC Annotation 注入 学习实例

    Annotation注入是Spring IOC的一种实现方式,它利用Java注解替代XML配置来管理Bean的依赖关系,使得代码更加简洁、可读性更强。 在Spring框架中,我们主要关注以下几个关键的注解: 1. `@Component`:这是一个基础...

    JavaEE Spring IoC注解

    在Spring中,IoC可以通过XML配置或注解实现,而注解方式则更受现代开发者的欢迎,因为它提供了更加简洁、直观的编程模型。 注解在Spring中的应用主要分为以下几类: 1. **Component Scan**:`@Component`、`@...

    模拟Spring IoC

    Spring IoC,全称Inversion of Control,即控制反转,是Spring框架的核心特性之一。它是一种设计模式,通过将对象的创建和管理交由容器处理,使得开发人员可以专注于业务逻辑,而不是对象间的依赖关系。在Spring框架...

Global site tag (gtag.js) - Google Analytics