Spring-HelloSpring-IOC创建对象的方式

3、HelloSpring

思考

  • Hello 对象是谁创建的 ? 【 hello 对象是由Spring创建的 】
  • Hello 对象的属性是怎么设置的 ? 【hello 对象的属性是由Spring容器设置的 】

这个过程就叫控制反转 :

  • 控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的
  • 反转 : 程序本身不创建对象 , 而变成被动的接收对象 .

依赖注入 : 就是利用set方法来进行注入的.

IOC是一种编程思想,由主动的编程变成被动的接收

可以通过newClassPathXmlApplicationContext去浏览一下底层源码 .

修改案例一

我们在案例一中, 新增一个Spring配置文件beans.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/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="MysqlImpl" class="com.kuang.dao.impl.UserDaoMySqlImpl"/>
    <bean id="OracleImpl" class="com.kuang.dao.impl.UserDaoOracleImpl"/>

    <bean id="ServiceImpl" class="com.kuang.service.impl.UserServiceImpl">
        <!--注意: 这里的name并不是属性 , 而是set方法后面的那部分 , 首字母小写-->
        <!--引用另外一个bean , 不是用value 而是用 ref-->
        <property name="userDao" ref="OracleImpl"/>
    </bean>

</beans>

测试!

@Test
public void test2(){
    ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
    UserServiceImpl serviceImpl = (UserServiceImpl) context.getBean("ServiceImpl");
    serviceImpl.getUser();
}

OK , 到了现在 , 我们彻底不用再程序中去改动了 , 要实现不同的操作 , 只需要在xml配置文件中进行修改 , 所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !

4、IOC创建对象的方式

  1. 使用无参构造创建对象,默认!
  2. 假设我们要使用有参构造创建对象
    1. 下标赋值

          <!--第一种,下标赋值-->
      <bean id="user" class="com.rui.pojo.User">
          <constructor-arg index="0" value="狂神说Java"/>
      </bean>
    2. 通过类型赋值
      <!--第二种方式:通过类型创建,不建议使用-->
      <bean id="user" class="com.rui.pojo.User">
          <constructor-arg type="java.lang.String" value="尹锐"/>
      </bean>
    3. 通过属性名赋值
      <!--第三种,直接通过参数名实现赋值-->
      <bean id="user" class="com.rui.pojo.User">
          <constructor-arg name="name" value="尹锐"/>
      </bean>

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

原文地址:https://www.cnblogs.com/MrKeen/p/12028946.html

时间: 2024-10-29 13:45:50

Spring-HelloSpring-IOC创建对象的方式的相关文章

Spring中IOC创建对象的方式

1.默认使用无参构造的方式,验证下: public class User { private String name; public User(){ System.out.println("这是一个无参构造方法"); } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println

七 Spring的IOC的注解方式

Spring的IOC的注解方式入门 创建web项目,引入相应的jar包 除了IOC的6个包,还需要AOP的包 引入Spring配置文件 创建applicationContext.xml 引入约束:使用注解开发引入context约束 file:///D:/Hibernate/Spring/spring-framework-4.2.4.RELEASE/docs/spring-framework-reference/html/xsd-configuration.html 创建接口和实现类: 配置Spr

Spring学习总结(一)——Spring实现IoC的多种方式

控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法.没有IoC的程序中我们使用面向对象编程对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方,个人认为所谓控制反转就是:获得依赖对象的方式反转了. IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现Io

使用ioc创建对象的方式之一(通过无参的构造方法来创建:)

通过无参的构造方法来创建: User.java 1 package com.yikuan.vo; 2 3 public class User { 4 public User() { 5 System.out.println("user的无参构造方法!"); 6 } 7 private String name; 8 public void setName(String name) { 9 this.name = name; 10 } 11 public void show(){ 12 S

Spring第二天:Spring的IOC的注解方式、Spring的AOP开发(XML)

注解方式 如下: 开启组件扫描--> 结果同上. 如果设置值: 新建service 注入dao 进行测试  注入Dao. 但要注意 autowired是按照类型注入的 不管dao的名字是啥 哪怕是userDao22222  只要它实现了userDao接口  那么就可以直接注入userDao. 要想按名称注入 就要用Qualifier一起使用 如上图 这时名字就必须一致(userDao22222) ,也可以直接使用Resource注解. 下面举例:整合开发: 还要关闭包扫描(因为类都交给xml管理

Spring学习二、HelloSpring与IOC创建对象方式

三.HelloSpring 配置文件 <?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

控制反转 &amp; Ioc创建对象的基础方式

控制反转---- 控制:谁来控制对象的创建 传统应用程序对象是由程序本身控制创建的,使用Spring后,对象是由Spring来控制创建的(经由xml文件配置) 反转:程序本身不再创建对象,而是反过来被动的接受对象(getBean(String id)) 依赖注入:就是利用set方法来进行注入的 所以,Ioc(控制反转)其实就是:对象由Spring来创建,管理,装配! Ioc创建对象的方式(xml装配bean) 使用无参构造创建对象,然后调用set方法(底层) <bean id="user&

spring的IOC和AOP详细讲解

1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同时,要是产生的是单例的bean,他还可以给管理bean的生命周期! spring的IOC有三种注入方式 : 第一是根据属性注入 也叫set方法注入: 第二种是根据构造方法进行注入: 第三种是根据注解进行注入,这种方式我认为比较好,方便,要是bean多的话,使用前两种方式会使得配置文件过于臃肿. Spri

Spring IOC - 控制反转(依赖注入) - 创建对象的方式

a.通过类的无参构造方法创建对象 在入门案例中就是这种方式.当用最普通的方式配饰一个<bean>时,默认就是采用类的 无参构造创建对象.在Spring容器初始化时,通过<bean>上配置的class属性反射的到字 节码对象,通过newInstance()创建对象. Class c = Class .forName("类的全路径名称") Object obj = c.newInstance() 这种方式下Spring创建对象,必须有无参的构造,否则无法通过反射创建