zoukankan      html  css  js  c++  java
  • springIOC

    IOC控制反转是一种编程思想。DI依赖注入是实现IOC的一种方法。IOC是spring框架的核心内容。

    控制:谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的。

    反转 : 程序本身不创建对象 , 而变成被动的接收对象 。

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

    所谓的IoC,一句话搞定 : 对象由Spring 来创建 , 管理 , 装配 !

    IOC创建对象的方式:

    1. 通过无参构造方法来创建
      public class User {
      
         private String name;
      
         public User() {
             System.out.println("user无参构造方法");
        }
      
         public void setName(String name) {
             this.name = name;
        }
      
         public void show(){
             System.out.println("name="+ name );
        }
      
      }

      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="user" class="com.kuang.pojo.User">
             <property name="name" value="kuangshen"/>
         </bean>
      
      </beans>

      测试类

      @Test
      public void test(){
         ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
         //在执行getBean的时候, user已经创建好了 , 通过无参构造
         User user = (User) context.getBean("user");
         //调用对象的方法 .
         user.show();
      }
    2. 通过有参构造方法来创建
      public class UserT {
      
         private String name;
      
         public UserT(String name) {
             this.name = name;
        }
      
         public void setName(String name) {
             this.name = name;
        }
      
         public void show(){
             System.out.println("name="+ name );
        }
      
      }

      有参构造时beans.xml的三种编写方式

      <!-- 第一种根据index参数下标设置 -->
      <bean id="userT" class="com.kuang.pojo.UserT">
         <!-- index指构造方法 , 下标从0开始 -->
         <constructor-arg index="0" value="kuangshen2"/>
      </bean>
      
      <!-- 第二种根据参数名字设置 -->
      <bean id="userT" class="com.kuang.pojo.UserT">
         <!-- name指参数名 -->
         <constructor-arg name="name" value="kuangshen2"/>
      </bean>
      
      <!-- 第三种根据参数类型设置 -->
      <bean id="userT" class="com.kuang.pojo.UserT">
         <constructor-arg type="java.lang.String" value="kuangshen2"/>
      </bean>

      测试

      @Test
      public void testT(){
         ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
         UserT user = (UserT) context.getBean("userT");
         user.show();
      }

      结论:在配置文件加载时,其中管理的对象都已经初始化了。

    Spring配置:

    别名:alias,为bean设置别名,可设置多个别名

    <!--设置别名:在获取Bean的时候可以使用别名获取-->
    <alias name="userT" alias="userNew"/>

    Bean的配置:

    <!--bean就是java对象,由Spring创建和管理-->
    
    <!--
       id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符
       如果配置id,又配置了name,那么name是别名
       name可以设置多个别名,可以用逗号,分号,空格隔开
       如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;
    
    class是bean的全限定名=包名+类名
    -->
    <bean id="hello" name="hello2 h2,h3;h4" class="com.kuang.pojo.Hello">
       <property name="name" value="Spring"/>
    </bean>

    import:

    <!--团队的合作通过import来实现-->
    <import resource="{path}/beans.xml"/>
  • 相关阅读:
    鼠标放大镜案例代码
    鼠标点击跟随,鼠标点击哪里,图片跟随到哪里;
    筋斗云效果(云朵在导航栏内随着鼠标移动)
    HDU5003:Osu!(签到题)HDU5038:(签到题,题意很坑)
    SDUT3146:Integer division 2(整数划分区间dp)
    SDUT3145:Integer division 1(换零钱背包)
    SDUT3143:Combinatorial mathematics(组合数学)
    SDUT3141:Count(哈希)好题
    SDUT1574:组合数的计算
    SDUT1607:Number Sequence(矩阵快速幂)
  • 原文地址:https://www.cnblogs.com/Difcipo/p/13052457.html
Copyright © 2011-2022 走看看