zoukankan      html  css  js  c++  java
  • spring的容器(控制反转、依赖注入)

    一、spring的容器

      ”容器“是spring的一个重要概念,其主要作用是完成创建成员变量,并完成装配。

      而容器的特点”控制反转“和”依赖注入“是两个相辅相成的概念。

      控制反转:我们在使用一个类型的实例实现某个功能时,需要先new出该类型的一个实例,并赋值给我们声明的某个引用变量,这样我们才能够使用该变量进行操作。而new和赋值本事我们自己的权限,此处便是将该控制权限反转交给了spring。

      依赖注入:某个类型要完成一个功能往往需要其他类型的变量来完成,我们在程序中往往通过自己new的方式来完成这个需求,而在spring中,它会帮助我们将这种装配的功能实现,这便是依赖注入。

     二、在系统中实现

      在spring中只使用IOC容器的话,那么前面命名空间的声明只需要使用

    <?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即可:

    <bean id="name" class="com.brolanda.spring.p.Name">
      <property name="givenName" value="斯里" />
      <property name="middleName" value="兰" />
      <property name="lastName" value="卡" />
    </bean>

      我们需要在Name这个类中,声明类型为String的变量名称,对应property标签的name属性,并为每个属性设置set、get方法,这样spring才能够帮你注入。

    public class Name {
        private String givenName;
        private String middleName;
        private String lastName;
        public String getGivenName() {
            return givenName;
        }
        public void setGivenName(String givenName) {
            this.givenName = givenName;
        }
        public String getMiddleName() {
            return middleName;
        }
        public void setMiddleName(String middleName) {
            this.middleName = middleName;
        }
        public String getLastName() {
            return lastName;
        }
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    }

      如果成员变量是其他自定义类型的实例,那么,我们需要先声明该自定义类型的bean,然后再在调用类的声明中引入对应的bean即可:

    <bean id="person" class="com.brolanda.spring.p.Person">
          <property name="name">
               <ref bean="name" />
          </property>
    </bean>

    即:person是引用了上面声明的name对象作为其成员变量。

    整体如下:

  • 相关阅读:
    js 读取XML
    JavaScript DOM 交换节点笔记
    JDBC学习总结 -- JDBC 快速入门 教程
    SQL 语句易错点讲解
    JAVA 他人博客收藏 (To be continue)
    <<MYSQL必知必会>> 入坑指南
    OpenGL 纹理学习总结
    BZOJ 3456 NTT图的计数 容斥
    洛谷1002 容斥原理+dfs OR DP
    51nod1565 FFT
  • 原文地址:https://www.cnblogs.com/brolanda/p/4299795.html
Copyright © 2011-2022 走看看