`

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();
	}

}

 

分享到:
评论

相关推荐

    25个经典的Spring面试问答

    请解释Spring Bean的生命周期 Spring Bean的作用域之间有什么区别 什么是Spring inner beans Spring框架中的单例Beans是线程安全的么 请举例说明如何在Spring中注入一个Java Collection 如何向Spring Bean中注入一个...

    Spring中文帮助文档

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...

    spring2.5开发参考手册

    这些新特性包括:注解驱动的依赖性注入(annotation-driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加...

    Spring的学习笔记

    九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-method destroy-method 不要和prototype一起用(了解) 15 第六课:annotation方式Spring 16 一、 开始使用annotation配置Spring 16 二、 @...

    spring-framework-2.5.1类包

    注解驱动的依赖性注入(annotation-driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加注解的方法上,在...

    Spring.3.x企业应用开发实战(完整版).part2

    3.5.2 ApplicationContext中Bean的生命周期 3.6 小结 第4章 在IoC容器中装配Bean 4.1 Spring配置概述 4.1.1 Spring容器高层视图 4.1.2 基于XML的配置 4.2 Bean基本配置 4.2.1 装配一个Bean 4.2.2 Bean的命名 4.3 ...

    spring2.5 学习笔记

    九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-method destroy-method 不要和prototype一起用(了解) 15 第六课:annotation方式Spring 16 一、 开始使用annotation配置Spring 16 二、 @...

    Spring API

    6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.6.1. 理解AOP代理 6.7. 以编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ进行domain ...

    Spring3.x企业应用开发实战(完整版) part1

    3.5.2 ApplicationContext中Bean的生命周期 3.6 小结 第4章 在IoC容器中装配Bean 4.1 Spring配置概述 4.1.1 Spring容器高层视图 4.1.2 基于XML的配置 4.2 Bean基本配置 4.2.1 装配一个Bean 4.2.2 Bean的命名 4.3 ...

    Spring2.5的新特性

    注解驱动的依赖性注入(annotation-driven dependency injection),使用注解而非XML元数据来自动侦测classpath上的Spring组件,注解对生命周期方法的支持,一个新的web控制器模型将请求映射到加注解的方法上,在...

    xmljava系统源码-springdemo:spring3的IOC,AOP,JDBC,orm等各个模块的使用示例集锦,可以作为入门的spri

    xml java系统源码 springdemo spring3的IOC,AOP,JDBC,orm等各个模块的使用示例...6.bean的生命周期 init-method,destroy-method,initiableBean, DisposableBean,lasyinit,singleton,prototype @PostConstruct @P

    java7源码翻译-recap-spring:回顾春天

    java7源码翻译回顾春天 Spring 1.0 ------&gt; 2004 Spring 2.0 ------&gt; ...XML ...Spring ...Annotation ...Spring ...Spring ...Spring ...xml ...spring 容器中。...Spring ...的生命周期。 Java配置 Spring 假设它创建的对象

    java web 开发详解

    对覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理 与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等 便于测试——归功于IoC 缺点: 大量的XML...

    低清版 大型门户网站是这样炼成的.pdf

    6.2.4 bean的作用域与生命周期 374 6.2.5 基于xml方式的bean装配 376 6.2.6 基于annotation方式的bean装配 381 6.2.7 基于xml方式的aop实现 386 6.2.8 基于annotation方式的aop实现 391 6.3 spring 2.5事务管理...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    8.6.1 无状态Session Bean的生命周期 321 8.6.2 有状态Session Bean的生命周期 322 8.6.3 定制Session Bean的生命 周期行为 323 8.7 在Session Bean中使用事务 327 8.7.1 容器管理事务 327 8.7.2 Bean管理事务 330 ...

    电子商城系统设计实习报告.doc

    Spring MVC优点: 对Spring MVC覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理;与许多表示层技术/框架无缝集 成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等。便于测试...

    Java/JavaEE 学习笔记

    第三章 Servlets生命周期................222 第四章 资源访问 ......................225 第五章 状态跟踪...230 第六章 过滤器 ...234 第七章 Web Application Life Cycle Events ........................235 ...

Global site tag (gtag.js) - Google Analytics