java_spring_实例化bean的3种方法
//Dao类
package com.dao.bean.www;
public interface PersonServiceDao {
public abstract void save();
}
//Bean
package com.bean.www;
import com.dao.bean.www.PersonServiceDao;
public class PersonServiceBean implements PersonServiceDao {
@Override
public void save() {
System.out.println("method save()");
}
}
//第二第三种需要的工厂方法
package com.factory.www;
import com.bean.www.PersonServiceBean;
public class PersonServiceFactory {
public static PersonServiceBean creatBean() {
return new PersonServiceBean();
}
public PersonServiceBean creatBean2() {
return new PersonServiceBean();
}
}
//配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 获取bean -->
<bean id="personService" class="com.bean.www.PersonServiceBean"></bean> <!-- 静态工厂方法 -->
<bean id="beanFactory1" class="com.factory.www.PersonServiceFactory" factory-method="creatBean" ></bean> <!-- 非静态工厂方法 1.首先实例化工厂类bean -->
<bean id="beanFactory2" class="com.factory.www.PersonServiceFactory" ></bean>
<bean id="GetBean" factory-bean="beanFactory2" factory-method="creatBean2" ></bean>
</beans>
//测试类
package com.itcast.www; import static org.junit.Assert.*; import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.dao.bean.www.PersonServiceDao; public class TestCaseDemo { @BeforeClass
public static void setUpBeforeClass() throws Exception {
} @Test
public void instanceSpring() { ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml"); // PersonServiceDao personService = (PersonServiceDao) ctx
// .getBean("personService");
// PersonServiceDao personService = (PersonServiceDao) ctx
// .getBean("beanFactory1");
PersonServiceDao personService = (PersonServiceDao) ctx
.getBean("GetBean");
personService.save(); } }
//************************初始化和构造函数******************************
package com.bean.www; import com.dao.bean.www.PersonServiceDao;
/*
* 初始化方法执行在构造方法之后
* 需要在配置文件中配置初始化或者销毁方法
* 用于打开或者关闭资源等
* 单实例-lazy-init=true 获取容器后创建
* lazy-init=false ctx.getbean实现
* 直到关闭才执行destroy方法
* 关闭方法 ctx.close();
* */
public class PersonServiceBean implements PersonServiceDao { public void init(){
System.out.println("init..................");
} @Override
public void save() {
System.out.println("method save()");
} public void destroy(){
System.out.println("destroy..................");
}
}
//配置文件
<bean id="personService" class="com.bean.www.PersonServiceBean" lazy-init="false" init-method="init" destroy-method=""></bean>
java_spring_实例化bean的3种方法的更多相关文章
- Spring Ioc源码分析系列--容器实例化Bean的四种方法
Spring Ioc源码分析系列--实例化Bean的几种方法 前言 前面的文章Spring Ioc源码分析系列--Bean实例化过程(二)在讲解到bean真正通过那些方式实例化出来的时候,并没有继续分 ...
- 实例化Bean的几种方法
1.使用构造器实例化Bean. 当没有指定实例化方法时,Spring IoC容器能使用默认空构造器.构造器实例化包括默认空构造器和有参数构造器两种方式创建Bean. 2.使用构造器实例 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring实例化Bean的三种方法
在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象.在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化.静态工厂方式实例化和实例工厂方式实例化. 构造器实例化 ...
- Spring实例化bean的三种方法
1.用构造器来实例化 <bean id="hello2" class="com.hsit.hello.impl.ENhello" /> 2.使用静态 ...
- Spring、实例化Bean的三种方法
1.使用类构造器进行实例化 <bean id="personIService" class="cn.server.impl.PersonServiceImpl&qu ...
- Spring学习之实例化bean的三种方式
实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...
- Spring实例化Bean的三种方式及Bean的类型
1.使用类构造器实例化 [默认的类构造器] <bean id=“orderService" class="cn.itcast.OrderServiceBean"/ ...
- 普通Java类获取spring 容器的bean的5种方法
方法一:在初始化时保存ApplicationContext对象方法二:通过Spring提供的工具类获取ApplicationContext对象方法三:继承自抽象类ApplicationObjectSu ...
- spring注入bean的三种方法
在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. 在第一种利用bean config file(spring xml)方式中 ...
随机推荐
- Java [leetcode 24]Swap Nodes in Pairs
题目描述: Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1-& ...
- C++学习笔记:List容器
http://www.cplusplus.com/reference/list/list/ #include <list> list l:初始化一个0大小的表 list l(10):初始化 ...
- JPA--多对多关系
JPA中,多对多关系用@ManyToMany标示. 关系维护端: package com.yl.demo1.bean.manyTomany; import java.util.HashSet; imp ...
- linux常识
一.linux常识 1.为什么学习linux及如何学习linux? 基于linux的操作系统是一种自由和开放源代码的类UNIX操作系统,其定义组件是linux内核,其稳定性.安全性.处理多并发已经得到 ...
- 第一个GTK+程序
在这一章节中,我们将开始编写第一个GTK+程序. 超级简单的例子 我们要“制造”一个超级简单的GTK+程序.就是显示一个空白的窗口. #include <gtk/gtk.h> int ma ...
- (Trie) uvalive 3942 Remember the word
题意:告诉你一个母串和子串,能用多少种不同的方案组合出母串. 思路:字典树(显然)+DP DP: dp[i]+=dp[j+1] i<=j<=m-1,且i到j的字符串能在字典树中找到.也就 ...
- phpMyAdmin 中数据库替换问题
将原来的数据库删除,然后进入data文件夹中修改名字, 但是后来前台出现错误: Zend_Db_Statement_Exception Object ( [_previous:Zend_Excepti ...
- SQL注入攻击及防范
一.什么是SQL注入1.SQL注入的定义 SQL注入(SQL Injection) 利用了程序中的SQL的漏洞,进行攻击的方法. 2.SQL注入举例 1)利用SQL语法错误获取数据库表的结构 ...
- while (cin>>str)退出死循环
今天在练习的时候突然发现了这个问题,百度之感觉还挺常见的,故记之! //题目描述 // //写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串. // //输入描述 : //输入一个 ...
- Docker系列(七)Shipyard安装及介绍
Shipyard 是一个基于 Web 的 Docker 管理工具,支持多 host,可以把多个 Docker host 上的 containers 统一管理:可以查看 images,甚至 build ...