spring 依赖注入DI-个人学习笔记

来源:互联网 发布:怎样查看淘宝信誉等级 编辑:程序博客网 时间:2024/04/29 03:08

依赖注入(dependency  injection):

依赖:指bean对象创建依赖于容器,bean对象依赖于资源。注入:bean对象依赖的资源由容器来设置和装配。

1.spring注入-构造注入:请看

spring-ioc 学习笔记2

2.spring注入-setter注入:

Test.java

<span style="font-size:12px;">public class Test {public static void main(String[] args) {ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");Student student=(Student)ac.getBean("student");student.show();}}</span>
1).常量注入

Student.java

public class Student {private String name;public void setName(String name) {this.name = name;}public void show(){System.out.println("name="+name);}}
beans.xml

 <bean name="student" class="cn.xunifeng.vo.Student">    <property name="name" value="李四"/>    </bean>

2).bean注入

beans.xml

<span style="font-size:12px;">  <bean name="addr" class="cn.xunifeng.vo.Address">     <property name="address" value="贵州贵阳市"/>     </bean>    <bean name="student" class="cn.xunifeng.vo.Student">    <property name="name" value="李四"/>    <property name="addr" ref="addr"/>    </bean></span>
Student.java

public class Student {private String name;private Address addr;public void setAddr(Address addr) {this.addr = addr;}public void setName(String name) {this.name = name;}public void show(){System.out.println("name="+name +" ;address="+addr.getAddress());}}

Address.java

public class Address {private String address;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}}
3).数组注入

beans.xml

 <bean name="addr" class="cn.xunifeng.vo.Address">     <property name="address" value="贵州贵阳市"/>     </bean>    <bean name="student" class="cn.xunifeng.vo.Student">    <property name="name" value="李四"/>    <property name="addr" ref="addr"/>    <property name="books">    <array>    <value>百年孤独</value>    <value>梦的解析</value>    <value>武动乾坤</value>    </array>    </property>    </bean>
student.java

public class Student {         ..................................private String[] books;public void setBooks(String[] books) {this.books = books;}............           ......       public void show(){...............................System.out.print("books=");for(int i=0;i<books.length;i++){System.out.print(books[i].toString()+"  ");}System.out.println();}}
4).List注入

beans.xml

<property name="hobbies">    <list>    <value>篮球</value>    <value>足球</value>    <value>排球</value>    </list>    </property>
5).Map注入
beans.xml

<span style="font-size:12px;"><property name="cards">    <map>    <!-- 第一种方法 -->    <entry key="建设银行" value="5552345565465431"/>    <!-- 第二种方法 -->    <entry>    <key><value>农业银行</value></key>    <value>522224151215121</value>    </entry>    </map>    </property></span>
6)Set注入

beans.xml

<property name="games">    <set>    <value>LOL</value>    <value>CS</value>    <value>DNF</value>    </set>    </property>
7).Null注入

beans.xml

<property name="email"><null/></property>
8).Properties注入
beans.xml

<property name="info">    <props>    <prop key="学号">2012040569</prop>    <prop key="性别">男</prop>    <prop key="姓名">张三</prop>    </props>    </property>

9).P命名空间注入(属性依然要设置set方法)

<span style="font-size:12px;"> <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns:p="http://www.springframework.org/schema/p"    xsi:schemaLocation="http://www.springframework.org/schema/beans          http://www.springframework.org/schema/beans/spring-beans.xsd"></span><pre class="programlisting"><span style="font-size:12px;"><span class="hl-tag"><bean name="user" class="cn.xunifeng.vo.User" p:name="李雪红" p:age="25"/></span></span><span style="font-size:12px;"></span>

user.java

<span style="font-size:12px;">package cn.xunifeng.vo;public class User {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [age=" + age + ", name=" + name + "]";}}</span>


10).C命名空间注入(要求有对应参数的构造方法  spring4.0版本才出现)

<span style="font-size:12px;"><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:c="http://www.springframework.org/schema/c"    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd">   <!-- C命名空间注入  需要有对应参数的构造方法 (前提需要引入头文件)-->    <bean name="user1" class="cn.xunifeng.vo.User" c:name="傅红雪" c:age="30"/></beans></span>
user.java

package cn.xunifeng.vo;public class User {private String name;private int age;public User() {}public User(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User [age=" + age + ", name=" + name + "]";}}










0 0
原创粉丝点击