IOC初始化销毁的2种实现方式
IOC初始化销毁的2种实现方式
1、bean内调用init-method 和destroy-method
2、通过注解实现@PostConstruct 和@PreDestroy
-----------------------------bean内调用init-method 和destroy-method------------------------
1、创建IOrderDao
- package com.longteng.lesson2.dao;
- public interface IOrderDao {
- public String bookOrder(String name);
- }
2、创建IOrderDao的实体 OrderDao
- package com.longteng.lesson2.dao.impl;
- import com.longteng.lesson2.dao.IOrderDao;
- public class OrderDao implements IOrderDao {
- @Override
- public String bookOrder(String name) {
- return name+"预订了订单";
- }
- }
3、创建OrderService
- package com.longteng.lesson2.service;
import com.longteng.lesson2.dao.IOrderDao;- public class OrderService {
private String orderSkuName;
public OrderService(String orderSkuName){
this.orderSkuName = orderSkuName;
}- public void setOrderSkuName(String orderSkuName) {
this.orderSkuName = orderSkuName;
}- public String getOrderSkuName() {
return orderSkuName;
}- public void setiOrderDao(IOrderDao iOrderDao) {
this.iOrderDao = iOrderDao;
}- IOrderDao iOrderDao;
- public String getOrderInfo(String name){
return iOrderDao.bookOrder(name);
}
public void initTest(){
System.out.println("初始化调用方法");
}
public void tearDownTest(){
System.out.println("回收调用方法");
}
}
4、 创建order.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="orderDao" class="com.longteng.lesson2.dao.impl.OrderDao"></bean>
<bean id="orderService" class="com.longteng.lesson2.service.OrderService" init-method="initTest" destroy-method="tearDownTest" >
<constructor-arg name="orderSkuName" value="123456789"></constructor-arg>
<property name="iOrderDao" ref="orderDao"></property>
</bean>
</beans>
5、创建测试类
- package com.longteng.lesson2.dao;
- import com.longteng.lesson2.service.OrderService;
- import org.junit.Assert;
- import org.junit.Before;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class OrderDaoTest {
- ApplicationContext context;
- @Before
- public void initApplication(){
- context = new ClassPathXmlApplicationContext("order.xml");
- }
- @Test
- public void test(){
- OrderService orderService = context.getBean("orderService", OrderService.class);
- System.out.println(orderService.getOrderInfo("zhou"));
- System.out.println(orderService.getOrderSkuName());
- Assert.assertEquals("成功了","zhou预订了订单",orderService.getOrderInfo("zhou"));
- }
- }
6、测试结果
- ::43.096 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Invoking init method 'initTest' on bean with name 'orderService'
- 初始化调用方法
- ::43.097 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Finished creating instance of bean 'orderService'
- ::43.098 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@d7f7e0]
- ::43.099 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'lifecycleProcessor'
- ::43.101 [main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Could not find key 'spring.liveBeansView.mbeanDomain' in any property source
- ::43.103 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'orderService'
- zhou预订了订单
--------------------------------------方式2通过注解方式实现----------------------------------
1、创建IOrderDao
- package com.longteng.lesson2.dao;
- public interface IOrderDao {
- public String bookOrder(String name);
- }
2、创建IOrderDao的实体 OrderDao
- package com.longteng.lesson2.dao.impl;
- import com.longteng.lesson2.dao.IOrderDao;
- import org.springframework.stereotype.Repository;
- @Repository
- public class OrderDao implements IOrderDao {
- @Override
- public String bookOrder(String name) {
- return name+"预订了订单";
- }
- }
3、创建OrderService
- package com.longteng.lesson2.service;
- import com.longteng.lesson2.dao.IOrderDao;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.annotation.PostConstruct;
- import javax.annotation.PreDestroy;
- @Service
- public class OrderService {
- @Autowired
- IOrderDao iOrderDao;
- public String getOrderInfo(String name){
- return iOrderDao.bookOrder(name);
- }
- @PostConstruct
- public void initTest(){
- System.out.println("初始化调用方法");
- }
- @PreDestroy
- public void tearDownTest(){
- System.out.println("回收调用方法");
- }
- }
4、创建Order配置类
- package com.longteng.lesson2.config;
- import com.longteng.lesson2.service.OrderService;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- @Configuration
- @ComponentScan(basePackages = {"com.longteng.lesson2.dao","com.longteng.lesson2.service"})
- public class OrderCfg {
- @Bean
- public OrderService getOrderService(){
- return new OrderService();
- }
- }
5、创建测试类
- package com.longteng.lesson2.dao;
- import com.longteng.lesson2.config.OrderCfg;
- import com.longteng.lesson2.service.OrderService;
- import org.junit.Assert;
- import org.junit.Before;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
- public class OrderDaoTest {
- ApplicationContext context;
- @Before
- public void initApplication(){
- context = new AnnotationConfigApplicationContext(OrderCfg.class);
- }
- @Test
- public void test(){
- OrderService orderService = context.getBean("orderService", OrderService.class);
- System.out.println(orderService.getOrderInfo("zhou"));
- Assert.assertEquals("成功了","zhou预订了订单",orderService.getOrderInfo("zhou"));
- }
- }
6、测试结果
- ::10.423 [main] DEBUG org.springframework.context.annotation.CommonAnnotationBeanPostProcessor - Invoking init method on bean 'getOrderService': public void com.longteng.lesson2.service.OrderService.initTest()
- 初始化调用方法
- ::10.423 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Finished creating instance of bean 'getOrderService'
- ::10.423 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.context.event.internalEventListenerFactory'
- ::10.444 [main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@e31a9a]
- ::10.444 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'lifecycleProcessor'
- ::10.447 [main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Could not find key 'spring.liveBeansView.mbeanDomain' in any property source
- ::10.449 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'orderService'
- zhou预订了订单
- Process finished with exit code
IOC初始化销毁的2种实现方式的更多相关文章
- 🙈羞,Spring Bean 初始化/销毁竟然有这么多姿势
文章来源:http://1t.click/bfHN 一.前言 日常开发过程有时需要在应用启动之后加载某些资源,或者在应用关闭之前释放资源.Spring 框架提供相关功能,围绕 Spring Bean ...
- Spring中bean的初始化和销毁几种实现方式
Bean的生命周期 : 创建bean对象 – 属性赋值 – 初始化方法调用前的操作 – 初始化方法 – 初始化方法调用后的操作 – --- 销毁前操作 – 销毁方法的调用. [1]init-metho ...
- bean初始化和销毁的几种方式
Bean生命周期 Bean创建 -->初始化 -->销毁 1.自定义Bean初始化 和销毁的方法 init-method和destroy-method 创建Bike类 public cla ...
- Spring随笔 —— IOC配置的三种不同方式简介
在spring framework中,IOC的配置是最基础的部分,常见的配置方式有基于xml文件和基于注解的配置方式.除了这两种配置方式之外,今天这里再介绍另一种配置方式,先用小demo重温下我们熟悉 ...
- spring ioc三种注入方式
spring ioc三种注入方式 IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转 什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容 ...
- Spring IOC 依赖注入的两种方式XML和注解
依赖注入的原理 依赖注入的方式---XML配置 依赖注入的方式---注解的方式 Spring 它的核心就是IOC和AOP.而IOC中实现Bean注入的实现方式之一就是DI(依赖注入). 一 DI的原理 ...
- Spring IOC 三种注入方式
1. 接口注入 2. setter注入 3. 构造器注入 对象与对象之间的关系可以简单的理解为对象之间的依赖关系:A类需要B类的一个实例来进行某些操作,比如在A类的方法中需要调用B类 ...
- Spring IOC以及三种注入方式
IOC是spring的最基础部分,也是核心模块,Spring的其他组件模块和应用开发都是以它为基础的.IOC把spring的面向接口编程和松耦合的思想体现的淋漓尽致. IOC概念 IOC(Invers ...
- JAVA中初始化ArrayList的三种方式
下面讲一下ArrayList初始化的几种不同方式. 一.最常用的初始化方式. List<String> list1 = new ArrayList<String>(); lis ...
随机推荐
- 108.生成和下载csv文件
生成CSV文件 有时候我们做的网站,需要将一些数据,生成一个csv文件返回浏览器,并且是作为附件的形式下载下来. 生成小的csv文件: 生成一个小的csv文件,我们用Python内置的csv模块来处理 ...
- 题解 P2981 【[USACO10FEB]奶牛在冰Cows on Ice】
楼上的思路都是从一个石头找跳到另一个石头的路径,但其实这题可以对于上下左右四个方向分别做一个虚拟节点,然后只需要找虚拟节点左边的虚拟节点就行了 问题是:不会用set怎么办??? 其实可以发现用vect ...
- ZJNU 1262 - 电灯泡——中高级
在影子没有到达墙角前,人越远离电灯,影子越长,所以这一部分无需考虑 所以只需要考虑墙上影子和地上影子同时存在的情况 因为在某一状态存在着最值 所以如果以影子总长与人的位置绘制y-x图像 会呈一个类似y ...
- 第五章——Pytorch中常用的工具
2018年07月07日 17:30:40 __矮油不错哟 阅读数:221 1. 数据处理 数据加载 ImageFolder DataLoader加载数据 sampler:采样模块 1. 数据处理 ...
- ios ktvhttpcache 音视频缓存插件使用
1.PodFile 文件增加 pod 'KTVHTTPCache', '~> 2.0.0' 2.在终端 需要先cd到podfile文件所在目录 执行pod install 3.在header ...
- Linux 标准IO库介绍
1.标准IO和文件IO有什么区别? (1).看起来使用时都是函数,但是:标准IO是C库函数,而文件IO是Linux系统的API. (2).C语言库函数是由API封装而来的.库函数内部也是通过调用API ...
- [Scoi2014]方伯伯的OJ(动态开点splay)
开始没看数据范围差点以为是这题了:https://www.cnblogs.com/hfctf0210/p/10911340.html 然后看到n<=1e8,怎么这么大? 所以这题需要用动态开点线 ...
- 哈夫曼编码的理解(Huffman Coding)
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最 ...
- 使用conda管理python环境
一.动机 最近打算折腾vn.py,但只有py27版本的,因为一向习惯使用最新稳定版的,所以不得不装py27的环境,不得不说 Python的全局锁真的很烦. 身为懒癌患者,必然使用全功能的anacond ...
- 关于tomcat报错记录
启动报错关键信息如下: Caused by: java.lang.IllegalStateException: Unable to complete the scan for annotations ...