SpringIDI_Setter方法

DI:依赖注入:

给属性赋值,提供了(XML)两种方案给属性赋值

方式:

1.Setter方法

2.构造函数

public class Person{

  private Long pid;

  private String name;

  //setter和getter方法

}

 

名词解释:

  在Spring容器中给对象属性赋值就叫装配

  DI注入就是给属性赋值的过程

1.ApplicationContext.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-2.5.xsd">

    <bean id="person" class="com.spring.di.xml.setter.Person">
        <!--
            property就是一个bean的属性
            name:用来描述属性的名称
            value就是值,如果是一般类型(基本类型和Stirng)

         -->    

        <property name="pid" value="1"></property>
        <property name="name" value="狗蛋"></property>

        <!-- Spring容器内部创建的student对象给person的student对象赋值了 -->
        <property name="student">
            <ref bean="student"/>
        </property>

        <property name="list">
            <list>
                <value>list1</value>
                <value>list2</value>
                <value>list3</value>
                <ref bean="student"/>
            </list>
        </property>

        <property name="sets">
            <set>
                <value>set1</value>
                <value>set1</value>
                <ref bean="student"/>
            </set>
        </property>

         <property name="map">
             <map>
                 <entry key="m1">
                     <value>map1</value>
                 </entry>
                 <entry key="m2">
                     <ref bean="student"/>
                 </entry>
             </map>
         </property>

        <property name="properties">
            <props>
                <prop key="p1">prop1</prop>
                <prop key="p2">prop2</prop>
            </props>
        </property>

        <property name="objects">
            <list>
                <value>obj1</value>
                <ref bean="student"/>
            </list>
        </property>

    </bean>

    <bean id="student" class="com.spring.di.xml.setter.Student"></bean>    

</beans>

测试代码

Person

 1 package com.spring.di.xml.setter;
 2
 3 import java.util.List;
 4 import java.util.Map;
 5 import java.util.Properties;
 6 import java.util.Set;
 7
 8 public class Person {
 9
10     private Long pid;
11     private String name;
12     private Student student;
13     private List list;
14     private Set sets;
15     private Map map;
16     private Properties properties;
17     private Object[] objects;
18
19     public Long getPid() {
20         return pid;
21     }
22     public void setPid(Long pid) {
23         this.pid = pid;
24     }
25     public String getName() {
26         return name;
27     }
28     public void setName(String name) {
29         this.name = name;
30     }
31     public Student getStudent() {
32         return student;
33     }
34     public void setStudent(Student student) {
35         this.student = student;
36     }
37     public List getList() {
38         return list;
39     }
40     public void setList(List list) {
41         this.list = list;
42     }
43     public Set getSets() {
44         return sets;
45     }
46     public void setSets(Set sets) {
47         this.sets = sets;
48     }
49     public Map getMap() {
50         return map;
51     }
52     public void setMap(Map map) {
53         this.map = map;
54     }
55     public Properties getProperties() {
56         return properties;
57     }
58     public void setProperties(Properties properties) {
59         this.properties = properties;
60     }
61     public Object[] getObjects() {
62         return objects;
63     }
64     public void setObjects(Object[] objects) {
65         this.objects = objects;
66     }
67
68 }

Studnet

 

package com.spring.di.xml.setter;

public class Student {

    public void say(){

        System.out.println("student");
    }

}

测试代码

package com.spring.di.xml.setter.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.spring.di.xml.setter.Person;

public class DIXMLTest {

    @Test
    public void testDI_XML_Setter(){

        ApplicationContext context=
                new ClassPathXmlApplicationContext("applicationContext.xml");

        Person person=(Person) context.getBean("person");

        System.out.println(person.getName());
        System.out.println(person.getList().size());

    }

}

输出:

狗蛋
4

 

时间: 2024-10-14 23:31:47

SpringIDI_Setter方法的相关文章

Unity 崩溃问题解决方法——之一

友情提示:工作随记,不喜勿喷 注意:文艺青年可以略过,暴力青年欢迎采纳 Library文件夹 Unity每次编译都会生成这个东西,不用担心丢失的问题.所以,干掉他! 选中 + Delete   或者  选中 + Shift  + Delete 网上看了很多方法,就觉得这个简单,粗暴,是我喜欢的类型. 优点:上面说了 缺点:如果工程过大,重新编译时间会比较长.(但是对于查Log日志来说,相对快点)

Java TM 已被阻止,因为它已过时需要更新的解决方法

公司的堡垒机需要通过浏览器登陆,且该堡垒机的网站需要Java的支持,最近通过浏览器登陆之后总是提示"java TM 已被阻止,因为它已过时需要更新的解决方法"导致登陆之后不能操作, 但是操作系统中确实已经安装了比较新的JDK,安装的JDK版本是jdk-7u67-windows-i586,因为太烦人,所以决定搞清楚报错的原因,一劳永逸,彻底解决这个问题 准备工作:安装JDK,安装版本jdk-7u67-windows-i586.exe,因为机器的Eclipse还依赖64位的JDK,所以另安

win7 64位系统 PB连接oracle数据库出现“oracle library oci.dll could not be loaded”问题的解决方法

今天与大家分享一个自己的学习笔记,希望能给遇到同样问题的人带来帮助. 不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题. 今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正

C#与数据库访问技术总结(八)之ExecuteNonQuery方法

ExecuteNonQuery方法 ExecuteNonQuery方法主要用来更新数据. 通常使用它来执行Update.Insert和Delete语句. 该方法返回值意义如下: 对于Update.Insert和Delete语句,返回值为该命令所影响的行数. 对于所有其他类型的语句,返回值为-1. Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下: (1)创建数据库连接. (2)创建Command对象,并指定一个SQL Insert.Update

android开发之onCreate( )方法详解

onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int) with a layout resource d

MAC平台下Xcode配置使用OpenCV的具体方法 (2016最新)

1.序言: 1.1 背景 本人小白一枚,不过因为最近在从事机器视觉方面的工作,所以接触到OpenCV. 因为工作需求,本人要在MAC端使用OpenCV实现一些视觉功能,配置环境成了最大的阻碍,网上查了很多相关资料和博客,都因为版本环境问题屡试屡败,不过经历重重尝试,笔者最终还是配置成功并运行了自己的源码.当然成功的关键还是因为笔者站在了巨人的肩膀上,借鉴了很多网上的教程,为了不误导大家配置的过程,参考文章的地址统一放在文章里,望各位大大看见之后能够理解,废话不说进入正题. 1.2 环境说明 如果

正则化方法:L1和L2 regularization、数据集扩增、dropout

本文是<Neural networks and deep learning>概览 中第三章的一部分,讲机器学习/深度学习算法中常用的正则化方法.(本文会不断补充) 正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合).其直观的表现如下图所示,随着训练过程,网络在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大--因为训练出来的网络过拟合了训练集,对训练集外的数据却不work

mac上 go-delve 安装出现The specified item could not be found in the keychain 解决方法

安装go语言的编译环境,在安装到 delve时候出现如下错误: If reporting this issue please do so at (not Homebrew/brew or Homebrew/core): https://github.com/go-delve/homebrew-delve/issues These open issues may also help: Upgrade to delve fails https://github.com/go-delve/homebr

初识运维3--在虚拟机中安装Linux发行版系统(CentOS)的方法

在讲Linux系统发行版本的安装过程之前,先大略说明一下虚拟化. 虚拟化:将底层硬件资源抽象为用户更容易读懂和使用的逻辑抽象层的技术. 最早由IBM提出,现使用率较高的虚拟化软件平台有三类:VMware workstation.VirtualBOX.HyperV.在这里使用VMware workstation作为例子讲解说明安装过程. 虚拟化网络: 桥接模式:让物理机和虚拟机利用物理网络接口完成通信.虚拟机可以访问互联网. 仅主机模式:让虚拟机和物理机利用被虚拟出来的VMnet1网络接口完成通信