zoukankan      html  css  js  c++  java
  • 初识Spring框架IOC属性注入

    Spring框架是个轻量级的Java EE框架。所谓轻量级,是指不依赖于容器就能运行的。

    Spring以IOC、AOP为主要思想,其中IoC,Inversion of Control 指控制反转或反向控制。在Spring框架中我们通过配置创建类对象,由Spring在运行阶段实例化、组装对象。

    在传统的方式中,我们需要去先实例化一个对象,再调用方法,比如有一个类A ,在其他类中去调用时需要先实例化才可以。

    而在Spring中将对象的创建交由Spring框架进行管理。 
     首先配置beans-xml文件的头文件:

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <beans xmlns="http://www.springframework.org/schema/beans"
    3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4 xmlns:context="http://www.springframework.org/schema/context"
    5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    6 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    7 
    8 
    9 </beans>

    属性注入:

     1 package com.spring.model;
     2 
     3 public class Dog {
     4     private int dogId;
     5     private String dogName;
     6     public int getDogId() {
     7         return dogId;
     8     }
     9     public void setDogId(int dogId) {
    10         this.dogId = dogId;
    11     }
    12     public String getDogName() {
    13         return dogName;
    14     }
    15     public void setDogName(String dogName) {
    16         this.dogName = dogName;
    17     }
    18     @Override
    19     public String toString() {
    20         return "Dog [dogId=" + dogId + ", dogName=" + dogName + "]";
    21     }
    22     public Dog(int dogId, String dogName) {
    23         super();
    24         this.dogId = dogId;
    25         this.dogName = dogName;
    26     }
    27     public Dog() {
    28         super();
    29     }
    30     
    31     
    32     
    33 }
    property 注入:
     1 <!--属性注入 :    如果属性是简单类型,直接通过value属性进行赋值 -->
     2         <bean id="dog1" class="com.spring.model.Dog">
     3             <property name="dogId" value="1"></property>
     4             <property name="dogName" value="哈士奇"></property>
     5         
     6         </bean>
     7         <!--如果属性注入的时候是对象,通过ref来赋值,ref的值为实例化对象的id  -->
     8         <bean id="man1" class="com.spring.model.Man">
     9             <property name="name" value="ztt"></property>
    10             <property name="dog" ref="dog1"></property>
    11         </bean>

    构造注入:

     1 package com.spring.model;
     2 
     3 public class Man {
     4     private String name;
     5     private Dog dog;
     6     public String getName() {
     7         return name;
     8     }
     9     public void setName(String name) {
    10         this.name = name;
    11     }
    12     public Dog getDog() {
    13         return dog;
    14     }
    15     public void setDog(Dog dog) {
    16         this.dog = dog;
    17     }
    18     @Override
    19     public String toString() {
    20         return "Man [name=" + name + ", dog=" + dog + "]";
    21     }
    22 }
     1 <!--构造注入:需要注意的是,构造注入时要有一个无参的构造  
     2             注入时默认是按照顺序来得
     3             如果赋值时没有按照构造时的顺序来 我们可以指定索引 index,索引从0开始;
     4             赋值时也可以根据属性的类型进行赋值,但当多个属性的类型一样时,此方法就存在了弊端
     5         
     6         -->
     7         
     8         <bean id="dog2" class="com.spring.model.Dog">
     9             <constructor-arg value="2"></constructor-arg>
    10             <constructor-arg value="泰迪"></constructor-arg>
    11         </bean>

     常用的List的注入方法:

     1     <!--List的注入方法  -->
     2         <bean id="list1" class="com.spring.model.List">
     3             <property name="list">
     4                 <list>
     5                     <value>武汉</value>
     6                     <value>济南</value>
     7                     <value>石家庄</value>
     8                     <value>烟台</value>
     9                 </list>
    10             </property>
    11         </bean>
    12         

    常用的Map的注入方法:

     1 <!-- Map的注入方法 -->
     2         <bean id="map1" class="com.spring.model.Map">
     3             <property name="map">
     4                 <map>
     5                     <entry key="1" value="武汉"></entry>
     6                     <entry key="2" value="济南"></entry>
     7                     <entry key="3" value="石家庄"></entry>
     8                     <entry key="4" value="烟台"></entry>
     9                 </map>
    10             </property>
    11         </bean>

    p命名空间:

    在bean配置的头文件中添加xmlns:p="http://www.springframework.org/schema/p"

    1 <!--p命名空间,简单属性  -->
    2         <bean id="dog3" class="com.spring.model.Dog" p:dogId="3" p:dogName="柴犬"></bean>
    3         
    4         <!--p命名空间,对象属性  -->
    5         <bean id="man3" class="com.spring.model.Man" p:name="ztt" p:dog-ref="dog1"></bean>

    自动装配:

     1 <!--自动装配autowire
     2         byName:与对象的属性的名字相匹配
     3                 例如:Man的其中一个属性是private Dog dog;所以找到的是Dog的实例化对象id是dog的
     4                 如果Man的其中一个属性是private Dog dog3;所以找到的是Dog的实例化对象id是dog3的
     5         byType:匹配相同的数据类型,需要注意的是当前容器只能有一个该类型的bean
     6           -->
     7         <bean id="dog" class="com.spring.model.Dog" p:dogId="0" p:dogName="哈士奇"></bean>
     8         <!--  -->
     9         <bean id="man4" class="com.spring.model.Man" p:name="lxx" autowire="byName"></bean>
    10         <bean id="man5" class="com.spring.model.Man" p:name="lxx" autowire="byType"></bean>
  • 相关阅读:
    setup命令开机启动服务配置
    setup命令网卡配置
    ARM架构与ARM内核
    菁华开示目录
    末法时代选修净土法门可得解脱
    净宗之声 | 向知识分子介绍净土法门(文声对照)
    1217. 无量寿经颂序
    150.2 重刻安士全书序二
    往生典范|黄忠昌往生记实+西方发愿文+止语的好处等
    深度揭秘|邪淫、艳遇背后的真相(影音+图文)
  • 原文地址:https://www.cnblogs.com/ztt0918/p/8917430.html
Copyright © 2011-2022 走看看