xml文件中有bean的配置,而且这个bean所对应的java类中存在一个无参构造器

那么这个时候spring容器就可以使用反射调用无参构造器来创建实例了(常规的方式)

通过工厂类获得实例(工厂类实现了接口FactoryBean>

注意spring中的PropertyPlaceholderConfigurer类的使用,在htmlsingle中直接搜索类名即可

例如:

//工厂类实现指定接口并且实现接口中的三个抽象方法:

public class ConnectionFactory implements FactoryBean{privateString driver;privateString url;privateString username;privateString password;

@Overridepublic Connection getObject() throwsException {

Class.forName(driver);

Connection conn=DriverManager.getConnection(url,username,password);returnconn;

}

@Overridepublic booleanisSingleton() {return false;

}

@Overridepublic ClassgetObjectType() {return Connection.class;

}

set/get

....

}

xml文件:

下面配置的这个类,可以自动的帮我们去读取指定的properties文件的内容,文件中用key-value的形式存放数据

读完之后我们就可以用${key}这种形式去拿文件中的value值了

在htmlsingle中直接搜索类名即可得到相关配置样例

classpath指的是从src下面找.

classpath:oracle.properties

因为这个类是一个工厂类,所以我们用名字conn在容器中拿对象的时候,

拿到并不是这个工厂类对象,而是这个工厂类对象调用完工厂方法后所返回的对象.

${driver}

${url}

${username}

${password}

main:

String path = "com/briup/ioc/factory/factory.xml";

ApplicationContext container=

newClassPathXmlApplicationContext(path);

Connection conn=(Connection)container.getBean("conn");

System.out.println(conn);

通过实例工厂获得bean对象(不需要实现或者继承任何接口或者父类),就是一个普通的工厂实例instanceFactory

//一个普通的工厂类

public classConnectionFactory{privateString driver;privateString url;privateString username;privateString password;public Object getConnection() throwsException {

Class.forName(driver);

Connection conn=DriverManager.getConnection(url,username,password);returnconn;

}

get/set

....

}

xml文件:

classpath:oracle.properties

${driver}

${url}

${username}

${password}

main:

String path = "com/briup/ioc/instanceFactory/instanceFactory.xml";

ApplicationContext container=

newClassPathXmlApplicationContext(path);

Connection conn=(Connection)container.getBean("conn");

System.out.println(conn);

通过静态工厂获得实例

例如

//静态工厂类

public classConnectionFactory{private static String driver =

"oracle.jdbc.driver.OracleDriver";private static String url =

"jdbc:oracle:thin:@127.0.0.1:1521:XE";private static String username = "briup";private static String password = "briup";public static Object getConnection() throwsException {

Class.forName(driver);

Connection conn=DriverManager.getConnection(url,username,password);returnconn;

}

}

xml文件:

main:

String path = "com/briup/ioc/staticFactory/staticFactory.xml";

ApplicationContext container=

newClassPathXmlApplicationContext(path);

Connection conn=(Connection)container.getBean("conn");

System.out.println(conn);

java创建容器对象的类是什么_spring容器创建bean对象的方式相关推荐

  1. 170630、springboot编程之普通类中调用spring管理的bean对象

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...

  2. java基础 通过继承Thread类和实现Runnable接口创建线程

    java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程. 只有实现了Runnable接口或继承了Thread类的对象才能成为线程. 继承Thread类 //格式: class ...

  3. python中简述对象和类的关系_Python笔记-习题42 对象、类及从属关系

    1.研究一下为什么Python添加了这个奇怪的叫做object的类,它究竟有什么含义呢? A:Python中一切皆对象,创建的类皆以object为基类(父类),默认继承继承基类的属性和方法 Pytho ...

  4. IOC容器创建bean对象的4种方式

    前言: Spring容器创建bean对象,一般通过反射机制查找bean元素的class属性值来找到要实例化的类,从而实例化bean对象.这便是调用构造方法来实例化bean对象 在某些情况下,若采用简单 ...

  5. 经过前面几天的学习已经初步了解到了Java 今天开始学习Java的 对象与类

    在了解对象与类之前,首先先学习方法 01.方法概述 概述:说白了就是用来存储一段代码 特点: 方法只有先定义才能使用 方法不会自动执行,必须调用才会执行(方法不调用,不会执行) 02.方法定义和调用( ...

  6. java object对象的方法_Java常见对象Object类中的个别方法

    Java常见对象Object类 public int hashCode() : 返回该对象的哈希码值. 注意:哈希值是根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.你可以理解成 ...

  7. 【SpringBoot】在普通类中获取spring容器中的bean

    这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的.在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能 ...

  8. javascript对象、类与原型链

    js是一个基于对象的语言,所以本文研究一下js对象和类实现的过程和原理. 对象的属性及属性特性 下面是一个对象的各个部分: var person = {name: "Lily",a ...

  9. scala的伴生类和伴生对象所属类是什么?

    文章目录 说在前面 运行原理 代码体现 解析 说在前面 scala是纯面向对象的语言,C是纯面向过程的语言,Java就是面向过程+面向对象的语言. 在说到伴生对象之前,要先说到java的static关 ...

  10. Java基础语法68-抽象类练习

    Java基础语法68-抽象类练习 编写工资系统,实现不同类型员工(多态)的按月发放工资.如果当月出现某个 Employee对象的生日,则将该雇员的工资增加100元. 实验说明: (1) 定义一个Emp ...

最新文章

  1. iOS开发之加载大量网络图片优化
  2. opencv 显示图片
  3. SpringBoot2.0实现静态资源版本控制
  4. 如何修改 匿名类型 中的属性值 ?
  5. P5787 二分图 /【模板】线段树分治
  6. Vue学习笔记(3)(Vue CLI)
  7. js实现复制html页面
  8. container_of宏定义分析---linux内核
  9. mysql和redis之间互相备份
  10. 计算机应用入学考试,本科计算机应用入学考试模拟试题.doc
  11. 平面设计ai教程笔记
  12. XenApp_XenDesktop_7.6实战篇之十七:XenApp应用程序交付
  13. 清华计算机网络所教授张,2019计算机考研清华大学计算机网络技术研究所简介...
  14. 软考初级程序员---题目(七)
  15. 安装GLPI资产管理
  16. [精简]托福核心词汇78
  17. 数据库服务器的打开方式
  18. 高德视觉技术中心招聘计算机视觉研发(社招/校招/实习岗位)
  19. 环球好货VIP会员首次建群的方法及话术
  20. TensorFlow 线性代数编译框架 XLA

热门文章

  1. 腾讯云-Linux 基础入门
  2. PgSQL · 特性分析 · 金融级同步多副本分级配置方法
  3. maven常用插件: 打包源码 / 跳过测试 / 单独打包依赖项
  4. 版本设置X:none node Title golang版本错误
  5. cygwin+hadoop+eclipse (三) 运行wordcount实例
  6. excel_applications
  7. 工作组下安装ISA Server 2004
  8. ios的Navigation Controller的学习使用
  9. Element-UI合集之el-select
  10. linux php yii安装教程,Linux 安装php 5.4 – yii2 环境