Spring容器创建对象的三种方式
时间:2022-05-16
本文章向大家介绍Spring容器创建对象的三种方式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/**
* spring容器做的事情:
* 解析spring的配置文件,利用Java的反射机制创建对象
*
*/
public class testHelloWorld {
@Test
public void testHelloWorld(){
//启动sping容器
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//从spring容器中把对象提取出来
HelloWorld helloWorld=(HelloWorld)context.getBean("helloWorld");
helloWorld.sayHello();
HelloWorld alias=(HelloWorld)context.getBean("三毛");
alias.sayHello();
}
/**
* 静态工厂
* 在spring 内部,调用了HelloWorldFactory 内部的 getInstance 内部方法
* 而该方法的内容,就是创建对象的过程,是由程序员来完成的
* 这就是静态工厂
* */
@Test
public void testHelloWorldFactory(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld=(HelloWorld)context.getBean("helloWorldFactory");
helloWorld.sayHello();
}
/**
* 实例工厂
* 1.spring容器(beans)创建了一个实例工厂的bean
* 2.该bean 调用了工厂方法的getInstance 方法产生对象
* */
@Test
public void testHelloWorldFactory2(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
HelloWorld helloWorld=(HelloWorld)context.getBean("helloWorld3");
helloWorld.sayHello();
}
public class HelloWorld {
public HelloWorld(){
System.out.println("spring 在默认的情况下,使用默认的构造函数");
}
public void sayHello(){
System.out.println("hello");
}
}
public class HelloWorldFactory {
public static HelloWorld getInstance(){
return new HelloWorld();
}
}
public class HelloWorldFactory2 {
public HelloWorld getInstance(){
return new HelloWorld();
}
}
<?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">
<!--
beans 存放了很多个类
把一个类放入到spring容器中,该类就是bean
-->
<!--
一个bean就是描述一个类
id就是标示符
命名规范:类的第一个字母变成小写,其他的字母保持不变
class为类的全名
-->
<bean id="helloWorld" class="com.sanmao.spring.ioc.HelloWorld"></bean>
<!--alias 别名-->
<alias name="helloWorld" alias="三毛"></alias>
<!--静态工厂-->
<bean id="helloWorldFactory" class="com.sanmao.spring.ioc.HelloWorldFactory"
factory-method="getInstance"
></bean>
<!--实例工厂-->
<bean id="helloWorldFactory2" class="com.sanmao.spring.ioc.HelloWorldFactory2">
</bean>
<!--factory-bean 指向实例工厂的bean-->
<!--factory-bean 实例工厂对象的方法-->
<bean id="helloWorld3" factory-bean="helloWorldFactory2" factory-method="getInstance"></bean>
</beans>
- PDF.NET的SQL日志 ASP.net 路径问题 详解
- 【自然框架】稳定版beta1——源码下载,Demo说明
- TOP语句放到表值函数外,效率异常低下的原因分析
- 常见.NET功能代码汇总 (3) 33,彻底关闭Excel进程
- Vue.js 入门指南之“前传”(含sublime text 3 配置) 1,下载安装Node.js2,配置Vue环境3,Vue初探4,配置sublime Text
- JavaScript的“原型甘露”
- JSP开发过程遇到的中文乱码问题及解决方法
- 求连续操作(登录)数量(次数)最大的记录(用户)
- 使用Topshelf创建自宿主的Windows服务程序
- 如何用ORM支持SQL语句的CASE WHEN?
- 条件表达式的短路求值与函数的延迟求值
- 使用CTE解决复杂查询的问题
- WinDbg调试.NET程序入门
- Release编译模式下,事件是否会引起内存泄漏问题初步研究 疑问:
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- windows navicat连接oracle11G 自用 实践笔记
- docker安装官方redis集群并集群连接测试 的正确姿势 自用 实践笔记
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
- Centos7安装轻量级TCP转发工具rinetd注册为服务的正确姿势 并设置开机自启 实践笔记 自用
- Connection open error . Connection Timeout Expired. The timeout period elapsed during the post-login
- macbook-12-2015款 安装win10系统 自用 实践笔记
- OpenGL ES 之attribute
- windows server 2012 r2 搭建文件服务器 问题记录 自用 实践笔记
- OpenGL ES 之uniform和varying
- OpenGL ES 绘制纹理
- Win10+Unlocker3+VMware15.5+MacOS10.14+xcode+QT for ios+虚拟机苹果系统 自用 实践笔记
- OpenGL ES 纹理过滤模式-glTexParameteri
- Jenkins时间修改为北京时间
- OpenGL ES for Android 绘制一个点
- OpenGL ES for Android 绘制线