zoukankan      html  css  js  c++  java
  • spring 核心技术

    spring 核心技术
    1--控制反转或反向控制 (inversion control IOC)

    当一个对象需要另一个对象时, 传统设计过程中, 需要通过调用者来创建被调用着的对象实例
    但是在spring中, 创建被调用者的工作不再有调用者来完成,而是由spring IOC容器完成.
    
    DI(dependency injection) 依赖注入
    就是组件之间的依赖关系有容器在运行期决定,形象的来说, 就是由容器动态的将某种依赖关系注入到组件中
    容器就是 .xml配置文件
    
    通过使用DI,当组件之间关系发生变化时,我们只需要修改系统中相关配置文件,不需要改动代码,这就减少了程序维护量, 又提高了程序的可重用性


    2--手动装配
    A:Bean工厂

    使用org.springframework.beans.factory.BeanFactory接口来获得Bean对象实例
    在spring中有很多BeanFactory接口的实现, 但最常用的是org.springframework.beans.factory.xml.XmlBeanFactory,
    通过XmlBeanFactory类可以从xml配置文件中读取配置文件中Bean的装配信息, 并在spring容器中建立相应的javaBean对象实例,并返回该实例
    
    要想建立一个XmlBeanFactory对象实例, 需要将配置文件通过FileSystemResource对象传入XmlBeanFactory类的构造器
    并通过BeanFactory的getBean方法获取Bean实例
    eg:
    装配applicationContext.xml文件
    BeanFactory factory = new XmlBeanFactory(new FileSystemResource("applicationContext.xml"));
    获得被装配的HelloWorld对象实例
    HelloWorld helloworld = (HelloWorld)factory.getBean("helloworld");


    B:应用上下文(ApplicationContext)

    通过org.springframework.context.ApplicationContext接口来装配Bean
    在spring中有两种方式实现:
    FileSystemXmlApplicationContext:通过绝对或相对路径指定xml配置文件
    ClassPathXmlApplicationContext: 从路径中搜索xml配置文件


    例:


    1--定义一个Bean叫Person, 属性: 姓名, 年龄, 工资. 使用spring IOC容器将各个属性值注入实例中

    <bean id="person" class="com.spring.di01.Person">
      <property name="name" value="张三"></property>
      <property name="age" value="11"></property>
      <property name="salary" value="10086"></property>
    </bean>

    2--Person中增加一个User属性user和user2

      <bean id="user" class="com.spring.di01.User">
            <property name="id" value="2"></property>
            <property name="username" value="mary"></property>
            <property name="password">
                <value>123123</value>
            </property>
        </bean>
    
        <bean id="person" class="com.spring.di01.Person">
            <property name="name" value="张三"></property>
            <property name="age" value="11"></property>
            <property name="salary" value="10086"></property>
            
            <!-- 外部注入 -->
            <property name="user">
                <ref bean="user"></ref>
            </property>
            
            <!-- 内部注入 -->
            <property name="user2">
                <bean class="com.spring.di01.User">
                    <property name="id" value="22"></property>
                    <property name="username" value="mary2"></property>            
                </bean>
            </property>
        </bean>
  • 相关阅读:
    Shell 同时读取多个文件
    Shell 进度条效果的一个实现
    在 CentOS7 上安装 Tomcat9
    Redis原子计数器incr,防止并发请求
    .Net高并发解决思路
    Redis windows服务器配置可远程连接
    Lambda表达式和For循环使用需要注意的一个地方
    C#多线程和线程池
    MongoDb 物理位置应用实现
    Android Studio3.0 配置AndroidAnnotation注解框架
  • 原文地址:https://www.cnblogs.com/myjavalife/p/4899491.html
Copyright © 2011-2022 走看看