当前位置: 首页 > news >正文

网站建设 工作职责广告软文是什么意思

网站建设 工作职责,广告软文是什么意思,怎么建设网站网页游戏,网站建设租房网模块目录 前言 第一种:静态工厂方式实例化对象 静态工厂的特点 demo(案例) 第二种:实例工厂的方式 实例工厂和静态工厂的区别 demo(案例) 第三种:实现FactoryBean规范的方式 demo(案例) 前言 spring 实…

目录

前言

第一种:静态工厂方式实例化对象

静态工厂的特点

demo(案例)

第二种:实例工厂的方式

实例工厂和静态工厂的区别

demo(案例)

第三种:实现FactoryBean规范的方式

demo(案例)


前言

spring 实例化对象的几种方式

  • 使用 构造方法实例化对象  spring学习(spring-bean实例化(无参构造与有参构造方法实现)详解)-CSDN博客
  •  工厂方式创建对象。

工厂方式实例化对象又可以分为三种情况:

一种是静态工厂;另一种是实例工厂;还有一种实现FactoryBean方式;下面我们就这三种方式分别实现一下。

准备工作 :导入 spring-context 依赖

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.23</version></dependency>

第一种:静态工厂方式实例化对象

静态工厂的特点

通过属性factory-method来指定一个静态方法,在该静态方法中达到创建对象的目标并返回交给spring容器管理。

demo(案例)

在 IDEA 新建两个类 学生 类,老师类,当前使用 静态工厂方式 创建 学生类对象

根据是否提前在 目标类 写静态方法 有两者写法

  •  先在目标类中 写好 静态方法

spring 配置文件 中

Test 测试类

运行结果

 注意:factory -method 属性值 是 你添加的静态方法名。如果你事先没有确定好静态方法,可以根据提示自定义方法名,创建在目标类中


  • 先不在目标类中添加静态方法,而是在配置文件中 自定义 静态方法名,之后再目标类中完善方法

根据提示自定义方法名,自动创建在目标类中

重新运行结果是一样的

现在有一个问题 ,使用 学生类的静态方法,创建老师类对象 是否可行呢?

在 Test 测试类中

运行结果

发现,确实可以 创建 老师类对象。

在测试类,我想要获得是 学生类对象,但因为我在 学生类的添加的静态方法中,返回老师对象,最终结果打印的也是老师对象的地址。这个情况,我们常常戏称为 狸猫换太子

具体的底层代码细节如下

通过这个现象 思考几个问题

  • 1 学生类对象 创建了没有

观察

1 spring 配置文件是否有表示学生信息的bean 标签

2 静态方法中是否有通过new 关键字创建对象

  • 2 老师 类对象 有没有交给 spring 容器 管理

我认为 老师类 对象有spring 容器的参与,但实际上创建还是 new 出来的。

看下一个知识点: 实例化工厂 创建

总结 静态工厂 实例化对象

总结:采用静态工厂的方式去实例化对象,只需要在bean标签中指定一个静态方法即可,用factory-method属性来指定,方法名自已取,反正由idea自动帮我们创建好。然后我们只需要在创建好的静态方法中返回一个对象就搞定了。


第二种:实例工厂的方式

实例工厂和静态工厂的区别

  • 实例工厂的方式,是在静态工厂的基础上在sping 配置文件 中 添加一个 factory-bean 属性,并实现真正目标类的方法

  • 实例工厂创建对象 需要非静态方法,并且该方法是存在真正的创建对象的类中


demo(案例)

当前有 Ball ,Fruit 类 ,使用实例化工厂方式 创建 Ball 类对象

spring 配置文件

<?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">
<!--使用静态工厂创建对象--><bean id="student" class="fs.exerise01.Student" factory-method="getObject"/>
<!--    实例工厂创建对象--><bean id="ball" class="fs.exerise02.Ball "></bean><bean id="fruit" class="fs.exerise02.Fruit" factory-method="getObject"  factory-bean="ball"></bean></beans>

发现 factory-bean 的属性值 和 把目标对象交给 容器生产的 唯一标识符 id 的值是息息相关

从上面的图片可以知道:

是spring 容器通过构造方法创建 Ball 类对象,后对象调用在Ball 类的getObject 方法来创建真正需要的目标对象


Ball 类代码

package fs.exerise02;public class Ball {public Ball getObject() {return new Ball();}
}

Test测试类代码

package fs.exerise02;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");Object bean = context.getBean("fruit");System.out.println(bean);}
}

运行结果

发现 表面上通过 getbean方法 获得 fruit 类对象方法,但实际是通过 实例化工厂方式创建ball类对象。真正做到了 移花接木的效果。

同样的道理,我们只需要修改Ball 类中的方法,可以任意创建目标对象?

如 之前在Ball 类中创建ball类对象。现在创建 fruit 类对象

其他的地方,一律不变!

运行结果

实例化工厂创建对象总结

1 使用实例化工厂创建对象,factory-bean 的属性值 表示真正调用本类的factory-method 属性值表示的方法

2 在本类方法中,我们可以修改方法,来实现任意对象的创建


第三种:实现FactoryBean规范的方式

demo(案例)

了解

Demo3 是 FactoryBean 接口的实现类,并重写  getObject 返回目标对象,getObjectType  返回 目标类的字节码文件,最终实现 Ball 类对象的创建

Demo3 类代码

package fs.exerise03;import fs.exerise02.Ball;
import org.springframework.beans.factory.FactoryBean;public class User implements FactoryBean<Ball> {// 返回一个Ball对象@Overridepublic Ball getObject() throws Exception {return new Ball();}
/// 返回Ball.class@Overridepublic Class<?> getObjectType() {return Ball.class;}
}

Test 测试类


package fs.exerise03;import fs.exerise02.Ball;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");Ball demo3 = (Ball)context.getBean("user");System.out.println(demo3.getObject());}}

运行结果

http://www.hkea.cn/news/789320/

相关文章:

  • 建设银行手机银行下载官方网站谷歌浏览器网页版入口在哪里
  • 网站建设 好域名注册信息
  • 公众号微网站建设认证哪个推广网站好
  • 爬取1024上传到wordpress蔡甸seo排名公司
  • 流感吃什么药更好seo的方法
  • 营销型网站建设市场seo黑帽技术有哪些
  • 扬中做网站的公司seo虚拟外链
  • 永川集团网站建设免费网站seo诊断
  • 国外 上海网站建设网络营销推广方式案例
  • 24手表网站网络技术推广服务
  • 鞍山网站制作推广游戏推广员判几年
  • 360如何做网站优化网页设计制作软件
  • 金华网站建设电话电商运营主要负责什么
  • 百度的官方网站游戏推广工作好做吗
  • 著名的深圳网站建设网页快照
  • 政务网站建设要求快速排名软件哪个好
  • 自己网站怎么做优化色盲和色弱的区别
  • 苏州建网站公司seo网络推广培训班
  • 福清市建设局网站石家庄学院
  • 找考卷做要去哪个网站中国国家培训网官网查询
  • 软件系统开发的大概步骤优化网站标题名词解释
  • 院校网站建设模板建站平台
  • 淘宝网站内搜索引擎优化怎么做广告推广平台网站有哪些
  • 大片播放网站国外免费推广网站有哪些
  • flash网站cms排名sem优化软件
  • 申请完域名怎么做网站百度链接提交
  • 驻马店市可以做网站的公司百度搜索竞价排名
  • 郑州市做网站吉林百度查关键词排名
  • 济宁网站建设seo抖音seo源码搭建
  • 茂名网站建设方案书简述seo和sem的区别