官网:https://docs.spring.io/spring-framework/docs/5.2.0.RELEASE/spring-framework-reference/core.html#spring-core
1.新建实体类

/*** @author LongXi* @create 2021-05-25 20:17*/
public class Hello {private String str;public String getStr() {return str;}public void setStr(String str) {this.str = str;}@Overridepublic String toString() {return "Hello{" +"str='" + str + '\'' +'}';}
}

配置文件

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--使用spring来创建对象,在spring中这些都成为bean类型 变量名 = new 类型()id = 变量名class = new 的对象property 相当于给对象属性设置一个值--><bean id="hello" class="com.lx.pojo.Hello"><property name="str" value="Hello Spring"/></bean></beans>

测试类:

/*** @author LongXi* @create 2021-05-25 20:35*/
public class MyTest {public static void main(String[] args) {// 获取spring上下文对象ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");// 我们的对象都在spring中管理了,我们要使用,直接去里面去就可以了Hello hello = (Hello) context.getBean("hello");System.out.println(hello.toString());}
}





案例1改修

添加配置文件

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="userDaoImpl" class="com.lx.dao.UserDaoImpl"/><bean id="userDaoMySqlImpl" class="com.lx.dao.UserDaoMySqlImpl"/><bean id="userServiceIpml" class="com.lx.service.UserServiceIpml"><property name="userDao" ref="userDaoMySqlImpl"></property></bean></beans>

修改测试类

/*** @author LongXi* @create 2021-05-24 21:34*/
public class MyTest {public static void main(String[] args) {//用户实际调用的是业务层,dao层他们不需要接触
//        UserService userService = new UserServiceIpml();
//        ((UserServiceIpml)userService).setUserDao(new UserDaoMySqlImpl());
//        userService.getUser();// 获取ApplicationContext上下文,拿到spring容器ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");//容器在手,天下我有,想用什么,get什么UserServiceIpml userServiceIpml = (UserServiceIpml) context.getBean("userServiceIpml");userServiceIpml.getUser();}
}

执行结果

方式1:使用无参构造方式
pojo实体类

/*** @author LongXi* @create 2021-05-26 20:52*/
public class User {private String name;public  User (){System.out.println("user 的无参构造");}public void show(){System.out.println("name="+name);}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

bean.xml

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.lx.pojo.User"><property name="name" value="龙兮"/></bean></beans>

测试类

/*** @author LongXi* @create 2021-05-26 20:55*/
public class MyTest {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");User user = (User) context.getBean("user");user.show();}
}

下面我们创建一个有参构造,替换掉无参构造

    public  User (String name){System.out.println("user 的无参构造");}

运行出错

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.lx.pojo.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.lx.pojo.User.()

方式二:使用有参构造

第一种:下表赋值

我们改变bean.xml配置文件

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--第一种:下表赋值--><bean id="user" class="com.lx.pojo.User"><constructor-arg index="0" value="龙兮"/></bean>
</beans>

第二种:类型赋值
我们改变bean.xml配置文件

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="user" class="com.lx.pojo.User"><constructor-arg type="java.lang.String" value="龙兮"/></bean></beans>

测试成功


思考问题:
假如有2个参数都是String呢?所以这种方式不建议使用。

第三种:直接通过参数名设置-

<?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/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--        <bean id="user" class="com.lx.pojo.User">-->
<!--            <property name="name" value="龙兮"/>-->
<!--        </bean>-->
<!--            &lt;!&ndash;第一种:下表赋值&ndash;&gt;-->
<!--            <bean id="user" class="com.lx.pojo.User">-->
<!--                <constructor-arg index="0" value="龙兮"/>-->
<!--            </bean>-->
<!--            &lt;!&ndash;第二种:通过类型创建&ndash;&gt;-->
<!--            <bean id="user" class="com.lx.pojo.User">-->
<!--                <constructor-arg type="java.lang.String" value="龙兮"/>-->
<!--            </bean>--><!--第三种:直接通过参数名设置--><bean id="user" class="com.lx.pojo.User"><constructor-arg name="name" value="龙兮"/></bean></beans>

测试成功

总结:在配置文件加载的时候,容器中管理的对象就已经初始化了。
user 和userT

Spring Ioc创建对象的方式相关推荐

  1. spring IOC创建对象方式

    spring IOC创建对象方式 通过无参构造来创建 验证方法: 创建实体类: public class User {private String name;public User() {System ...

  2. Spring学习3之IOC创建对象的方式

    前言 我们学习了IOC是什么,并且练习了一个Spring程序,知道了对象是由Spring创建,管理,装配.IOC有哪些创建对象的方法呢? 一.IOC创建对象的方式 <!--IOC创建对象的方式 ...

  3. Spring(三)——HelloSpring、IOC创建对象的方式、属性注入、自动装配、使用注解开发

    文章目录 1. 简介 2. IOC理论推导 3. HelloSpring 4. IOC创建对象的方式 4.1 使用无参构造创建对象(默认) 4.2 使用有参构造创建对象 5. Spring配置 5.1 ...

  4. Spring的IOC创建对象的方式和代码基本解释为什么要有ioc的思维以及Ioc容器和spring依赖注入的解释

    首先我们要知道 Ioc是个啥? ​ IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合.更优良的程序.传统应用程序都是由我们在类内部主动创建依赖对象,从而导致 ...

  5. Spring——Spring容器创建对象的方式

    目录 1.Spring容器创建对象的特点 2.Spring容器创建对象的时间 3. Spring容器创建对象能创建几个 4.使用 spring 容器创建的 java 对象图解 1.Spring容器创建 ...

  6. spring(一):spring IoC的注入方式总结

    前言:谈谈对springIOc的理解,两张图很好的阐述了springIoc容器的作用. 传统应用程序示意图.jpg IoC容器后程序结构示意图.jpg springIoC容器注入方式有set注入,构造 ...

  7. Spring(一)——用Spring IOC容器创建对象

    文章目录 1. Spring简介 2. 创建一个Spring项目 3. 用Spring IOC创建对象 1. Spring简介 是作为Java EE开发的一个框架,可以实现对象的注入.事务管理.面向切 ...

  8. 【Spring】Spring IOC学习笔记

    Spring IOC Spring简介 Spring理念 使现有的技术更加容易使用,本身是一个大杂烩,整合了现有的技术框架 Spring优点 Spring是一个轻量级的 控制反转(IOC) 和 面向切 ...

  9. SSM—Spring框架,IOC理论推导,Hello Spring,IOC创建对象方式,Spring的配置,DI(依赖注入)

    文章目录 1.Spring 1.1.Spring简介(了解) 1.2.spring优点 1.3.组成(七大模块) 1.4.拓展 2.IOC理论推导 2.1.IOC本质 3.Hello Spring 4 ...

最新文章

  1. python函数的作用是_Python函数一
  2. python空字典对象相当于false吗_python怎么判断某一对象是否为字典
  3. 清空python的变量
  4. ArchiCAD 23中文版
  5. 通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0......
  6. vue路由参数改变,组件数据没重新更新问题
  7. windows下 dos 执行php 代码
  8. LeetCode 424. 替换后的最长重复字符(双指针+滑动窗口)
  9. 【FLUENT案例】04:利用DDPM+DEM模拟鼓泡流化床
  10. EditPlus中有用的快捷键
  11. Come On, Baby!
  12. 工作流系统之三十三 撤回的实现
  13. esri开发大赛项目总结
  14. 我假装考上了浙江大学
  15. 第一个微信小程序的诞生
  16. 各标点符号的英文名称
  17. zynq usb dwc3中断事件异常
  18. Max Script|物体选择和拷贝
  19. 领取CPS外卖红包攻略及小程序项目源码
  20. Excel如何隔一行或几行填充颜色

热门文章

  1. java 线程死锁简单例子_java 多线程死锁详解及简单实例
  2. 最大最小背光亮度修改
  3. JS中同名函数有效执行顺序
  4. 元素与集合的问题思考
  5. 炎热天气看书还是钓鱼?隐马尔科夫模型教你预测!
  6. 个人觉得非常好用的mysql客户端工具的HeidiSQL
  7. Qt深入:不能不知道的Type、Attribute和Flags
  8. Padrino 生成器指南
  9. 如何做研究-精辟分析
  10. 如何取得事件中鼠标坐标