Spring IOC创建对象的两种方式
作者:XIaoyummm 发布时间:2023-09-10 15:58:27
标签:spring,ioc,创建对象
IOC创建对象的方式
一、 使用无参构造创建对象(默认方式)
创建实体类
注意:属性必须要有set方法,来完成注入
public class User {
private String name;
public User() {
System.out.println("执行了User类的无参构造方法~");
}
public User(String name){
this.name = name;
System.out.println("执行了User类的有参构造方法");
}
//使用无参构造方法时,必须要设置set方法,因为注入时 需要通过set方法注入
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
配置Bean
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.test.pojo.User">
<property name="name" value="gyp"/>
</bean>
</beans>
测试类
public class MyTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
User user = context.getBean("user", User.class);
System.out.println(user);
}
}
结果:
二、使用有参构造创建对象
通过下标注入
通过名字注入 【推荐】
通过类型注入
有参构造,不需要set方法注入
通过下标方式注入(通过index来选择,给有参构造的第几个参数注入)
(1)配置Bean
<bean id="user" class="com.test.pojo.User">
<constructor-arg index="0" value="gyp"/>
</bean>
(2)测试结果
通过名字注入
(1)配置Bean
<bean id="user" class="com.test.pojo.User">
<constructor-arg name="name" value="gyp"/>
</bean>
(2)测试结果
通过类型注入(不建议使用!因为当类里面有两个相同类型的属性时,无法给属性注入)
(1)配置Bean
<bean id="user" class="com.test.pojo.User">
<constructor-arg type="java.lang.String" value="gyp"/>
</bean>
(2)测试结果
总结:在加载配置文件的时候,IOC就已经创建好了对象!
来源:https://blog.csdn.net/XIaoyummm/article/details/114744961


猜你喜欢
- 在讲策略模式之前,我先给大家举个日常生活中的例子,从首都国际机场到XXX酒店,怎么过去?1)酒店接机服务,直接开车来接。2)打车过去。3)机
- 本文实例为大家分享了C#字数统计(字母、数字、汉字、符号)的具体代码,供大家参考,具体内容如下namespace 测试1{ public p
- 实体类package com.whty.entity;public class User {private int id;private S
- 测试类中的问题和解决思路问题在测试类中,每个测试方法都有以下两行代码:ApplicationContext ac = new ClassPa
- package com.famous.dark.util;import java.io.File;import java.io.FileFi
- 目录1、若 a 的值为 3 时,下列程序段被执行后, c 的值是多少?( )2、以下哪项不是java基础类型()3、Java中只有整型才能使
- 因为课程需要,昨天好多同学在安装Android studio3.6.1后,无法构建,不知道什么原因,我的电脑上使用的是之前3.4版本的,可以
- kafka 架构原理大数据时代来临,如果你还不知道Kafka那就真的out了!据统计,有三分之一的世界财富500强企业正在使用K
- 你可能在上篇文章中《深入多线程之:双向信号与竞赛的用法分析》注意到了这个模式:两个Waiting 循环都要下面的构造:lock(_locke
- 摘要:介绍使用Java Stream流排序器Comparator对List集合进行多字段排序的方法,包括复杂实体对象多字段升降序排序方法。综
- 前提准备:1. 项目中至少需要引入的jar包,注意版本: a) core-renderer.jar&nb
- 本文实例为大家分享了android实现选项卡功能,通过计算偏移量,设置tetxview和imageView的对应值,一些color的值读者自
- 本文实例为大家分享了Java实现聊天机器人完善版的具体代码,供大家参考,具体内容如下Client代码:package GUISocket.c
- 如果想分析Android下 某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump
- 比较简单的一个控件,就是加些逻辑处理而已,以前貌似是直接监听的,封装起来方便点public class AccountTxtView ext
- 本文实例为大家分享了java实现录音播放的具体代码,供大家参考,具体内容如下需求:1.实现可以从麦克风进行录音2.可以停止录音3.实现播放录
- android通过toast实现悬浮通知效果,如图:实现的功能: 自定义悬浮弹窗;点击其他地方该布局不受影响;可自定义显示时间;可
- 需求winForm 程序输出类型为 windows 程序(不是命令行程序)在运行时想输入一些信息编译开发调试,如何实现这一功能解答:Allo
- 一、传递参数既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员(方法、属性、索引器、运算符和构造函数)更改参数的值,并保持该更
- 通过Class对象获取对象的方式是通过class.newInstance()方式获取,通过调用默认构造参数实例化一个对象。/** * Cre