阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
目前这里能调用是因为,在service的实现类里面,new了一个dao的对象

正常情况下 这里不应该是new一个对象,应该等于null或为空

设置为空侯再运行就会报错

出错的原因是这里为null

需要讲完Bean的细节后。再来看上面的代码。
新建一个项目

配置打包方式

加入spring 的依赖

复制03里面的代码进来。

复制到04的里面

dao的包整个删除

service中不再调用dao类。都删除


复制bean.xml到新项目里



spring对bean的管理细节

第一种方式创建bean

Service的Impl类有个默认构造函数,加上name参数

执行main方法


提示没有默认构造函数

当类里面没有默认构造函数,配置文件也开始报错


当写了id和class后,没有别的标签就会去找默认构造函数,如果没有就不能创建
当时使用别人写好的类,存在于jar包中,我们该如何使用呢?我们也不确定他有没有构造函数。
如何在配置文件中得到一个document对象
新建一个class

假设这个类是在jar包中的,怎么去得到这个对象呢?这列里面我们定义了一个方法返回IAccountService这个对象。

在bean配置文件内这么配置,这里就需要用到第二种方式
第二种方式创建Bean

accountService不在是通过InstanceFactory得到的,我们要用工厂里面的方法
FactoryBean属性:指定是哪个工厂Bean

Factory-method属性执行类的方法


下面的factory-bean配置的值就会去上面找id为instanceFacotory

运行测试类。可以正常的运行,没有任何问题
第三种方式创建Bean

复制InstanceFactory改名叫做StaticFactory

把方法改成static的

依然使用一个class的属性。、

这样和我们的摄像是不符合的。我们的想法是

还需要用到factory-method这个方法已经不是一个普通的方法,而是一个静态方法

jar里面类的方法有的有可能用static修饰,有的可能不用static修饰。所以这里spring都给我们提供了支持。右键执行看到的结果是一样的

把这两个类看做是jar中的类,不是.java文件。是class文件我们没法去修改。如果想用它某个方法的返回值存入spring容器中。bean对象的创建的第二种和第三种就是解决这个问题

jar包中的某个类的方法

阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式的更多相关文章
- spring:bean的细节之三种创建Bean对象的方式
<!--创建Bean的三种方式--><!--第一种方式,使用默认构造函数创建 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有属性和标签时. 采用的就 ...
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法 获取Class类实例的方法: 类名.class 实例名.getClass() Class.forNam ...
- spring mvc中几种获取request对象的方式
在使用spring进行web开发的时候,优势会用到request对象,用来获取访问ip.请求头信息等 这里收集几种获取request对象的方式 方法一:在controller里面的加参数 public ...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_3 spring基于XML的IOC环境搭建和入门
创建新项目 修改为jar包的方式 把上一个工程内的代码 java下的com复制过来 由于配置文件没有,所以一运行就会报错 factory文件夹整个删除 dao的实现类 这里删除 测试类保留这两行代码 ...
- 【SSH进阶之路】Spring的IOC逐层深入——Spring的IOC原理[通俗解释一下](三)
1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ...
- Spring框架几种创建bean的方式
Spring框架下,Bean的创建和装配非常的灵活,提供了三种主要的方式,并且相互见可以互相看见,也就是你可以随意地采用你喜欢且合适的方式创建Bean,而不用担心他们之间的兼容问题. 一.使用XML显 ...
- spring源码阅读笔记06:bean加载之准备创建bean
上文中我们学习了bean加载的整个过程,我们知道从spring容器中获取单例bean时会先从缓存尝试获取,如果缓存中不存在已经加载的单例bean就需要从头开始bean的创建,而bean的创建过程是非常 ...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
适应配置的方式解决我们刚才的编码操作 -dist结尾的就是spring 的开发包 解压好的 这里面是约束 libs是扎包 三个为一组,实际上只有21个 自己在使用需要导入jar包的时候,选择这种没有任 ...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_9 spring的依赖注入
新建工程 改成jar包 加入spring的依赖 复制之前的工程代码 再复制配置文件 fac factory整个删除 构造函数也删除.删除后的代码.如下 配置文件中的注释都删除掉 spring中的依赖注 ...
随机推荐
- 010-SaltStack及SaltStack Web UI安装部署
saltstack web uiweb平台界面 saltapi项目主页:http://salt-api.readthedocs.org/en/latest/ halite 项目主页:https://g ...
- string::find_first_of
string (1) size_t find_first_of (const string& str, size_t pos = 0) const noexcept; c-string (2) ...
- spring容器BeanFactory简单例子
在Spring中,那些组成你应用程序的主体及由Spring Ioc容器所管理的对象,都被称之为bean.简单来讲,bean就是Spring容器的初始化.配置及管理的对象.除此之外,bean就与应用程序 ...
- 第二篇【Zabbix客户端的完整布署】
关于Zabbix服务端布署请查看 1.上传zabbix安装包(源码包默认(Server和Agent是一起的)) [root@sms-v2 ~]# ll /root/ -rw-r--r-- root r ...
- QTCreator:QSS语法高亮(QSS Syntax highlight)
由于QSS几乎等同CSS[1]语法,所以我们设置有 QT 语法高亮: Qtcreator QSS syntax highlight setting: Qt Creator QSS 语法交互设置:QTC ...
- QT:QSS字体设置
css,qss font-family常用的黑体宋体等字体中英文对照 当qss使用中文设置字体时,无法生效.因为qss不支持中文设置字体,所以下面给出一些常用的黑体宋体字体中英文对照. 微软雅黑: M ...
- B/S文件上传下载解决方案
需求: 项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在20G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以20G来进行限制. PC端全平台支持,要求支持Window ...
- UVa 1592 Database (map)
题意:给出n行m列的数据库(数据范围: n 1~10000, m 1~10), 问你能不能找出两行r1, r2,使得这两行中的c1, c2列是一样的, 即(r1,c1)==(r2,c1) && ...
- poj 1064 高精度 二分
Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 32191 Accepted: 6888 Descrip ...
- textstudio添加中文支持
修改编译器为XeLaTeX,方法如下: Options -> Configure -> Build -> Default Compiler -> XeLaTeX 并在文本开头处 ...