Spring:Spring-IOC实例化bean的常用三种方式
Spring容器提供了三种对bean的实例化方式:
1)构造器实例化
public class Demo {
private String name;
//getter和setter方法略
}
<?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="demo1" class="com.oak.junit.day01.Demo"></bean>
</beans>
测试:
@Test
public void testCtx() {
//实例化Spring容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
//取出demo1
Demo demo1=ctx.getBean("demo1",Demo.class);
System.out.println(demo1);
}
2)静态工厂方法实例化
public class DemoBeanFactory {
//静态工厂方法-返回一个Demo实例
public static Demo staticDemoBean(){
return new Demo();
}
}
<?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="demo1" class="com.oak.junit.day01.Demo"></bean> <!-- 静态工厂实例化 class为工厂类 factory-method为静态工厂方法 -->
<bean id="demo2" class="com.oak.junit.day01.DemoBeanFactory"
factory-method="staticDemoBean"></bean>
</beans>
测试:
@Test
public void testCtx() {
//实例化Spring容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
//取出demo1
Demo demo1=ctx.getBean("demo1",Demo.class);
System.out.println(demo1); //取出demo2
Demo demo2=ctx.getBean("demo2",Demo.class);
System.out.println(demo2);
}
3)实例工厂方法是实例化
工厂类中加入实例工厂方法:
public class Demo {
private String name;
//getter和setter方法略
}
public class DemoBeanFactory {
//静态工厂方法-返回一个Demo实例
public static Demo staticDemoBean(){
return new Demo();
}
//实例工厂方法-返回一个Demo实例
public Demo constructorDemoBean(){
return new Demo();
}
}
<?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="demo1" class="com.oak.junit.day01.Demo"></bean> <!-- 静态工厂实例化 class为工厂类 factory-method为静态工厂方法 -->
<bean id="demo2" class="com.oak.junit.day01.DemoBeanFactory"
factory-method="staticDemoBean"></bean> <!-- 先实例化工厂类 -->
<bean id="demoBeanFactory" class="com.oak.junit.day01.DemoBeanFactory"></bean>
<!-- 实例工厂实例化 class为工厂类 factory-bean指定工厂类 factory-method为实例工厂方法 -->
<bean id="demo3" factory-bean="demoBeanFactory"
factory-method="constructorDemoBean"></bean>
</beans>
测试:
@Test
public void testCtx() {
//实例化Spring容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
//取出demo1
Demo demo1=ctx.getBean("demo1",Demo.class);
System.out.println(demo1); //取出demo2
Demo demo2=ctx.getBean("demo2",Demo.class);
System.out.println(demo2); //取出demo2
Demo demo3=ctx.getBean("demo3",Demo.class);
System.out.println(demo3);
}
文章转载至:https://blog.csdn.net/qq_34598667/article/details/83246492
Spring:Spring-IOC实例化bean的常用三种方式的更多相关文章
- Spring学习(五)-----注入bean属性的三种方式( 1: 正常的方式 2: 快捷方式 3: “p” 模式)
在Spring中,有三种方式注入值到 bean 属性. 正常的方式 快捷方式 “p” 模式 看到一个简单的Java类,它包含两个属性 - name 和 type.稍后将使用Spring注入值到这个 b ...
- 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比
[原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- Spring的依赖注入(DI)三种方式
Spring依赖注入(DI)的三种方式,分别为: 1. 接口注入 2. Setter方法注入 3. 构造方法注入 下面介绍一下这三种依赖注入在Spring中是怎么样实现的. 首先我们需要以下几个 ...
- Solon 开发,四、Bean 扫描的三种方式
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- 【Spring】Spring之向 IOC 容器注入对象的三种方式
关于Spring的搭建可参见:浅析Spring框架的搭建.在测试之前还是应该先将环境配置好,将相关Jar包导进来.Spring创建的对象,默认情况下都是单例模式,除非通过scope指定. 向IOC容器 ...
- 【spring】 SpringMVC返回json数据的三种方式
配置方法一 **1.导入第三方的jackson包,jackson-mapper-asl-1.9.7.jar和jackson-core-asl-1.9.7.jar. 2.spring配置文件添加** & ...
- Spring AOP编程(二)-AOP实现的三种方式
AOP的实现有三种方式: l aop底层将采用代理机制进行实现. l 接口 + 实现类 :spring采用 jdk 的动态代理Proxy. l 实现类: ...
- ios多线程开发的常用三种方式
1.NSThread 2.NSOperationQueue 3.GCD NSThread: 创建方式主要有两种: [NSThread detachNewThreadSelector:@selector ...
随机推荐
- 10.11 arping:发送arp请求
arping命令 是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包检查局域网内所有设备的硬件地址. arping 命令的参数选项及说明 -c <次数> ...
- 安装T4环境
Install-Package Microsoft.VisualStudio.TextTemplating.14.0 -Version 14.3.25407
- 在Maven普通项目上添加Web app的支持
项目右键____> Add Frameworks Support
- 郑政 | 2021软件代码开发技术作业四 | 需求改进&系统设计
需求改进&系统设计 -------------------------------------------------------------------------------------- ...
- [leetcode] 44. 通配符匹配(Java)(动态规划)
44. 通配符匹配 动态规划 做动态规划很简单,三步走: 第一步,判断可否用动态规划做,即判断是否满足两个条件:①最优子结构,②重叠子问题.显然该题求s与p是否match,可由其字串层层分解上来. 我 ...
- Mybatis基础使用方法
1.首先在数据库中建立一张表 create table login( name varchar(20) not null, username varchar(20) not null, passwor ...
- CUDA 内存统一分析
CUDA 内存统一分析 关于CUDA 编程的基本知识,如何编写一个简单的程序,在内存中分配两个可供 GPU 访问的数字数组,然后将它们加在 GPU 上. 本文介绍内存统一,这使得分配和访问系统中任何处 ...
- JMeter使用教程2——MySQL压测
之前写过一篇JMeter使用教程,只是介绍了http请求的压力测试,想到MySQL的测试也挺必要的,于是写下这篇记录一下.如果不知道怎么下载和安装,可以看一下上一篇关于JMeter的文章,地址是:ht ...
- 错误档案2:MySQL8.0连接C3P0的问题
>>>跳过BB,空降正文<<< 目录 前言 问题出现 解决方法 结论 前言 大家好呀,我是 白墨,一个热爱学习与划水的矛盾体. 前两天在使用C3P0连接池时遇到问题 ...
- 单点突破:MySQL之索引
前言 开发环境:MySQL5.7.31 什么是索引 在MySQL中,索引(Index)是帮助高效获取数据的数据结构. 我们可以将数据库理解为一本书,数据库中的各个数据列(column)就是目录中的章节 ...