`

spring中bean的范围(xml/annotation)

 
阅读更多

1.xml

配置文件bean.xml中,bean标签中的属性scope默认为singleton,表示每次创建的service和首次创建的是同一个对象,如果设置为prototype,表示每次创建的service是不同的对象。

<?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-2.5.xsd">

	<bean id="userDAOImpl" class="com.test.dao.impl.UserDAOImpl"></bean>
	<bean id="userService" class="com.test.service.UserService" scope="prototype">
		<property name="userDAO">
			<ref bean="userDAOImpl" />
		</property>
	</bean>
	
</beans>

 

2.annotation

UserDAOImpl.java

package com.test.dao.impl;

import org.springframework.stereotype.Component;

import com.test.dao.UserDAO;
import com.test.model.User;

@Component("userDAOImpl")
public class UserDAOImpl implements UserDAO {
	public void save(User user) {
		System.out.println("user saved!");
	}
}

 

UserService.java

package com.test.service;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import com.test.dao.UserDAO;
import com.test.model.User;

@Scope("prototype")
@Component("userService")
public class UserService {
	private UserDAO userDAO;

	public UserDAO getUserDAO() {
		return userDAO;
	}

	@Resource(name="userDAOImpl")
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}

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

}

 

公共junit测试类

UserServiceTest.java

package com.test.service;

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

import com.test.model.User;

public class UserServiceTest {

	@Test
	public void testAdd() throws Exception {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
		UserService service = (UserService) applicationContext.getBean("userService");
		UserService service2 = (UserService) applicationContext.getBean("userService");
		//scope默认是singleton(单例的意思),这里打印值为true
		//scope设置为prototype(原型的意思),每次创建新的对象,这里打印值为false
		System.out.println(service == service2);
		User u = new User();
		u.setUsername("zhangsan");
		u.setPassword("123");
		service.add(u);
	}

}

 

分享到:
评论

相关推荐

    spring中service生命周期(xml/annotation)

    本文将探讨Spring中Service的生命周期,以及如何通过XML配置和注解来管理这些组件。 首先,Spring Service的生命周期通常包括实例化、初始化、正常运行、销毁四个阶段。在XML配置中,我们可以通过`&lt;bean&gt;`标签来...

    详解Spring中Bean的生命周期和作用域及实现方式

    Spring框架提供了多种方式来实现Bean,例如使用XML配置文件、使用Annotation配置等。 1. 使用XML配置文件:可以在XML配置文件中配置Bean的生命周期和作用域。 2. 使用Annotation配置:可以使用Annotation来配置Bean...

    详解 Spring 3.0 基于 Annotation 的依赖注入实现

    在 Spring 框架的早期版本中,依赖注入(Dependency Injection, DI)主要通过 XML 配置文件来实现。随着 Java 技术的发展和应用需求的变化,Spring 3.0 引入了基于注解(Annotation)的依赖注入方式,极大地简化了...

    spring aop 实现源代码--xml and annotation(带lib包)

    在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、...

    Spring的Annotation配置相关讲义

    在Spring框架中,Annotation配置是一种简洁且强大的方式来管理Bean的定义和依赖注入,它消除了传统的XML配置文件,使得代码更加简洁、易读。在Spring 3.0及以上版本中,Annotation配置得到了广泛的应用。 首先,...

    spring和Mybatis的xml配置文件提示约束包

    "spring和Mybatis的xml配置文件提示约束包"这个主题,主要是关于在XML配置文件中使用的DTD(Document Type Definition)文档类型定义,它为XML文件提供了结构约束和语法规范。 DTD是一种元语言,用于定义XML文档的...

    spring_MVC源码

    14. &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; 15. 16. &lt;!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --&gt; 17. &lt;bean class="org....

    springjdbc

    &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /&gt; &lt;!-- apache.dbcp连接池的配置 --&gt; &lt;bean id="dataSource" class="org.apache.commons.dbcp....

    java巩固练习Spring 的bean注入方式有几种demo例子

    本篇将深入探讨Spring框架中bean的几种注入方式,通过具体的demo实例来帮助你巩固理解和实践。 首先,我们来了解Spring中的bean注入主要有以下四种方式: 1. **设值注入(Setter Injection)**:这是最常见的一种...

    Spring Annotation简介一

    在传统的Spring应用中,大量的bean配置信息存储在XML文件中,这不仅增加了配置文件的复杂性,也使得代码与配置分离,降低了代码的直观性。Spring Annotation通过在类、方法或字段上添加特定的注解,可以实现自动配置...

    使用xml和annotation实现类似spring依赖注入和自动扫描类的功能

    本文将探讨如何使用XML配置和注解(Annotation)来实现类似Spring的这些功能。我们将深入理解这两种方法,以及它们如何帮助我们构建松耦合、可维护的代码。 首先,依赖注入是面向对象设计中的一个重要概念,它允许...

    Spring annotation

    Spring框架是Java开发中不可或缺的一部分,它通过提供丰富的注解简化了依赖注入、配置管理和AOP(面向切面编程)等任务。本文将深入探讨Spring注解及其在实际开发中的应用。 1. **依赖注入(Dependency Injection, ...

    spring 定时器 注解+xml 方式模板

    如果你更倾向于XML配置,可以在Spring的配置文件中添加`&lt;task:scheduled-tasks&gt;`元素,并在其中定义任务。下面是一个例子: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    spring xml 定时任务

    在Spring框架中,XML配置是传统且广泛使用的方式来设置应用的组件和行为,包括实现定时任务。定时任务在软件开发中扮演着重要角色,它允许应用程序在预设的时间执行特定的任务,例如数据清理、日志归档或者发送通知...

    spring 的Annotation方式

    ### Spring的Annotation方式详解 #### 引言 随着Spring框架的发展,其依赖注入(DI)机制也经历了从XML配置向注解驱动的重大转变。自Spring 3.0版本起,框架引入了一系列注解来简化依赖配置,使得开发人员能够在不...

    最新 spring-framework-4.2.5 英文官方文档,包含html、pdf、epub等

    Spring Framework 4.2.5 是一个里程碑式的版本,在Java企业级应用开发中扮演着核心角色。这个框架提供了丰富的功能,包括依赖注入、面向切面编程(AOP)、数据访问、Web开发、集成测试和更多。以下是这个版本的一些...

Global site tag (gtag.js) - Google Analytics