`

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

 
阅读更多

1.xml

在配置文件

bean.xml中,bean标签通过配置属性init-method,可以在执行该bean的时候,首先执行该属性配置的方法,配置属性destroy-method,可以在执行完bean的时候,执行它配置的方法(代码中要显示调用destroy方法)

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

	<bean id="userDAOImpl" class="com.test.dao.impl.UserDAOImpl"></bean>
	<bean id="userService" class="com.test.service.UserService" init-method="init" destroy-method="destory">
		<property name="userDAO">
			<ref bean="userDAOImpl" />
		</property>
	</bean>
	
</beans>

 

UserService.java

package com.test.service;

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

public class UserService {
	private UserDAO userDAO;

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

	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	
	public void init(){
		System.out.println("init");
	}
	
	public void destory(){
		System.out.println("destory");
	}
}

 

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.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

import org.springframework.stereotype.Component;

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

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

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

	@Resource(name="userDAOImpl")
	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}
	
	@PostConstruct
	public void init(){
		System.out.println("init");
	}
	
	@PreDestroy
	public void destory(){
		System.out.println("destory");
	}
}

 

公共junit测试类

UserServiceTest.java

package com.test.service;

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

import com.test.model.User;

public class UserServiceTest {

	@Test
	public void testAdd() throws Exception {
		ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
		UserService service = (UserService) applicationContext.getBean("userService");
		User u = new User();
		u.setUsername("zhangsan");
		u.setPassword("123");
		service.add(u);
		applicationContext.destroy();
	}

}

 

分享到:
评论

相关推荐

    spring中bean的范围(xml/annotation)

    在Spring框架中,Bean的范围(Scope)是控制...在实际开发中,选择正确的Bean范围对于优化性能、保证线程安全以及管理对象生命周期至关重要。正确理解和使用Bean范围能够帮助我们构建更加高效和健壮的Spring应用程序。

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

    Spring中Bean的生命周期和作用域及实现方式 Spring是一个非常流行的Java应用程序框架,它提供了一个灵活的机制来管理Bean的生命周期和作用域。Bean的生命周期和作用域是Spring框架中两个非常重要的概念,它们决定了...

    Spring Annotation简介一

    5. **生命周期注解**:如`@PostConstruct`和`@PreDestroy`,分别标记在初始化和销毁bean的方法上,使开发者能自定义bean的生命周期行为。 6. **AOP注解**:Spring的面向切面编程(AOP)也支持注解,如`@Aspect`定义...

    spring 的Annotation方式

    自Spring 3.0版本起,框架引入了一系列注解来简化依赖配置,使得开发人员能够在不编写冗长XML配置文件的情况下,轻松管理Bean的生命周期和依赖关系。本文旨在深入探讨Spring框架中基于注解的依赖注入机制,特别是`@...

    Spring基于注释(Annotation)的配置.pdf

    这些注解进一步增强了Spring框架的功能性和灵活性,使得开发者可以根据实际需求更加灵活地管理Bean及其生命周期。 #### 五、具体使用步骤 1. **引入Spring框架**:首先确保项目中已经包含了Spring框架的相关依赖。...

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

    5. **生命周期回调**: - `@PostConstruct` 和 `@PreDestroy` 注解用于标记在 Bean 初始化后和销毁前执行的方法。 6. **自定义注解**: - 用户可以创建自定义注解,并在其上使用 `@Component`,使其具有类似的...

    Spring IOC Annotation 注入 学习实例

    Spring IOC(Inversion of Control,控制反转)是Spring框架的核心特性,它将对象的创建和管理权交给了Spring容器,从而解耦了应用代码与对象生命周期管理的关系。Annotation注入是Spring IOC的一种实现方式,它利用...

    Spring+mybatis annotation形式

    同时,Maven的生命周期可以帮助我们编译、测试、打包和部署应用。 总结起来,这个项目展示了如何在Spring和MyBatis的注解模式下进行数据库操作。通过这种方式,我们可以减少XML配置,使得代码更简洁,同时也易于...

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

    3. **Bean容器**:Spring容器(ApplicationContext 或 BeanFactory)负责管理对象(称为bean)的生命周期,包括初始化、配置、装配以及销毁。容器通过XML、注解或Java配置来读取bean定义。 4. **注解驱动开发...

    Spring注解驱动开发实战-annotation

    在Spring中,我们可以使用注解来控制Bean的生命周期。@PostConstruct和@PreDestroy注解分别表示在Bean初始化后和销毁前执行的方法。例如: ```java @Service public class UserService { @PostConstruct public ...

    csh框架+cxf+spring+hibernate+mysql 注解 annotation xml json

    【标题】"csh框架+cxf+spring+hibernate+mysql 注解 annotation xml json" 提到的是一个基于Java技术栈的Web服务开发架构,涵盖了多个关键组件和技术,这些技术在现代企业级应用中广泛应用。以下是这些知识点的详细...

    spring、springmvc、mybatis的mapper三个文件的根节点标签

    这个标签定义了一个容器,它管理所有Bean的生命周期和依赖注入。例如: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    spring mvc基础

    Spring配置文件通常用于管理Bean的生命周期,以及配置数据源、事务管理等。 ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...

    SpringMVC Spring MyBatis 框架整合 Annotation Maven Project

    此外,Maven还提供了多种生命周期和插件,用于编译、测试、打包和部署等任务。 整合这三个框架,开发人员可以构建出高效、模块化的Web应用,其中SpringMVC处理HTTP请求,Spring负责业务逻辑和依赖管理,MyBatis处理...

    使用Spring2.5的Autowired实现注释型的IOC

    在Spring框架中,IOC是通过容器来管理对象生命周期的,而Autowired则是Spring2.5中的一种新特性,可以实现快速的自动注入,无需在xml文档里面添加bean的声明,大大减少了xml文档的维护。 使用Autowired可以实现基于...

    spring注解

    首先,需要在XML配置文件中启用注解支持,添加`&lt;context:annotation-config/&gt;`标签,这会激活Spring对特定注解的扫描和处理,比如`@Autowired`和`@Resource`: ```xml &lt;beans xmlns="http://...

    Spring - Annotation 自动匹配注入IOC

    在Spring框架中,注解(Annotation)自动匹配注入IoC(Inversion of Control,控制反转)是一种关键特性,它极大地简化了Java应用的配置管理。本文将深入探讨这一主题,帮助开发者更好地理解和利用这一功能。 首先...

    spring+hibernate+struts2 +mybatis整合笔记

    1. **配置Spring核心容器**:创建`applicationContext.xml`文件来管理Bean的生命周期。 ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi...

Global site tag (gtag.js) - Google Analytics