spring-bean实例化三种方式
在spring中,bean的示例化有三种方式。
1、使用类的无参构造函数创建
2、使用静态工厂方式创建
3、使用实例化工厂方式创建。
具体代码如下
静态工厂方式:
Bean2.java
package cn.itcast.bean; public class Bean2 { public void add(){
System.out.println("Bean2................");
}
}
Bean2Factory.java
package cn.itcast.bean; public class Bean2Factory {
//静态方法,返回Bean2对象 public static Bean2 getBean2(){
return new Bean2();
}
}
IoC方式:
user.java
package cn.itcast.ioc; public class User { public void add(){
System.out.println("add........");
} }
实例化工厂方式:
Bean3.java
package cn.itcast.bean; public class Bean3 { public void add(){
System.out.println("Bean3................");
}
}
Bean3Factory.java
package cn.itcast.bean; public class Bean3Factory {
public Bean3 getBean3(){
return new Bean3();
}
}
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"> <!-- ioc入门 -->
<bean id="user" class="cn.itcast.ioc.User"></bean> <!-- 使用静态工厂类创建对象 -->
<bean id="Bean2" class="cn.itcast.bean.Bean2Factory" factory-method="getBean2"></bean> <!-- 使用实例工厂创建对象 -->
<bean id="Bean3Factory" class="cn.itcast.bean.Bean3Factory"></bean>
<bean id="Bean3" factory-bean="Bean3Factory" factory-method="getBean3"></bean>
</beans>
测试类:
package cn.itcast.ioc; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.itcast.bean.Bean2;
import cn.itcast.bean.Bean3; public class TestIOC { @Test
public void testUser() { // 1 加载spring配置文件。根据创建对象
ApplicationContext context = new ClassPathXmlApplicationContext(
"bean1.xml"); //2 得到配置创建的文件 ioc
User user = (User)context.getBean("user") ;
System.out.println(user); user.add(); //使用静态工厂类创建对象
Bean2 bean2 =(Bean2)context.getBean("Bean2");
System.out.println(bean2);
bean2.add() ; // 使用实例工厂创建对象
Bean3 bean3 = (Bean3) context.getBean("Bean3");
System.out.println(bean3);
bean3.add();
}
}
运行测试类,结果显示
spring-bean实例化三种方式的更多相关文章
- Spring学习之实例化bean的三种方式
实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...
- spring创建bean的三种方式
spring创建bean的三种方式: 1通过构造方法创建bean(最常用) 1.1 spring默认会通过无参构造方法来创建bean,如果xml文件是这样配置,则实体类中必须要有无参构造方法,无参构造 ...
- spring Bean的三种配置方式
Spring Bean有三种配置方式: 传统的XML配置方式 基于注解的配置 基于类的Java Config 添加spring的maven repository <dependency> ...
- spring配置datasource三种方式
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp34 spring配置datasource三种方式 1.使用org.spri ...
- Solon 开发,三、构建一个Bean的三种方式
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
创建应用对象之间协作关系的行为称为装配(wiring),这也是依赖注入的本质. Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,而开发者需要告诉Spring需要创建哪些 ...
- Spring依赖注入三种方式详解
在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...
- Spring笔记03(Spring创建对象的三种方式)
1.创建对象的三种方式和bean的生命周期的验证: Animal接口代码: package cn.pb.dao; /** * 动物接口 */ public interface Animal { //吃 ...
- spring配置datasource三种方式及具体信息
1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就 ...
- Spring创建对象的三种方式以及创建时间
创建对象的三种方式: 1.采用默认的构造函数创建 2.采用静态工厂方法 1.写一个静态工厂方法类 public class HelloWorldFactory { public static Hell ...
随机推荐
- io读取文件时考虑问题有?
1.根据不同的文件内容选择不同的操作类 文本文件选Reader\Writer 图片.视频 inputStream\outputStream 2.要考虑源文件的编码格式,例如源文件是以GBK编码的,要 ...
- Linux Shell脚本编程基础(11)
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核,不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序.Shel编程语言具有普通编程 ...
- Android逆向进阶—— 脱壳的奥义(基ART模式下的dump)
本文作者:i春秋作家HAI_ZHU 0×00 前言 市面上的资料大多都是基于Dalvik模式的dump,所以这此准备搞一个ART模式下的dump.HAI_的使用手册(各种好东西) Dalvik模式是A ...
- Failed to start docker.service: Unit not found.
安装教程参考: https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1 https://yq.aliyu ...
- Docker三剑客之Docker Machine
一.什么是Docker Machine Docker Machine 是Docker官方编排项目之一,使用go语言编写的,使用不同引擎在多种平台上快速的安装Docker环境,开源地址:https:// ...
- 09-01 Java final,多态,抽象类,接口
final /* final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆盖,复写) final可以修饰变量,该变量不能被重新赋 ...
- 【Canal源码分析】TableMetaTSDB
这是Canal在新版本引入的一个内容,主要是为了解决由于历史的DDL导致表结构与现有表结构不一致,导致的同步失败的问题.采用的是Druid和Fastsql,来记录表结构到DB中,如果需要进行回滚时,得 ...
- 打印页面时a标签不显示URL的方法
以前写博客啊,总想写一篇大作,然后希望能挂到博客园首页,隔一会儿看看阅读量有多少.其实哪有那么多大作,大部分时间都是解决了一个小问题,然后需要记录一下.比如下面这篇. 今天遇到一个需求是,打印网页时, ...
- Method 'initializationerror' not found.Opening the test classs JUnit4单元测试报错问题解决办法(图文详解)
不多说,直接上干货! 问题现象 今天使用JUnit 4进行单元测试时,测试程序一直运行不起来,报method initializationerror not found错误,如下: 问题分析 网上说版 ...
- notecase的下载与安装(全网最详细)(图文详解)
不多说,直接上干货! notecase是什么? 一个按照树状结构来组织文档内容的笔记管理程序 1.双击 2.aceept 3.选择安装所放置的目录路径 4.选择开启目录文件夹 我这里,保持默认 建议默 ...