构造方法与setter方法

上一个随笔提到了constructor-arg子标签,此随笔将会介绍一些类型的赋值方法

①String类型、基本数据类型或其包装类都可以使用value标签属性赋值

  String类型和基本类型的操作如下:

//User.java文件中的代码
public  User(int id){
    System.out.println("序号"+ id);
}
public  User(String name){
    System.out.println("姓名" + name);
}
<!-- application.xml文件中的代码-->
<bean class="com.zzj.ov.User">
    <constructor-arg type="int" value="21"></constructor-arg>
    <constructor-arg type="String" value="朱祖杰"></constructor-arg>
</bean>
//测试文件的代码
public class Test {
    public static void main(String[] args){
        new ClassPathXmlApplicationContext("application.xml");
    }
}

②类类型(自定义类型)

类类型的操作如下(以Date类型为例):

//User.java文件中的代码
public  User(Date birth){
    System.out.println("生日" + birth);
}
<!-- application.xml文件中的代码-->
<!-- 将Date类引用 -->
<bean name="bi" class="java.util.Date"></bean>
<!-- 使用ref-->
<bean class="com.zzj.ov.User">
    <constructor-arg ref="bi"></constructor-arg>
</bean>
//测试文件的代码
public class Test {
    public static void main(String[] args){
        new ClassPathXmlApplicationContext("application.xml");
    }
}

③数组类型

constructor-arg ——>array——>value(String类型、基本数据类型或其包装类),ref>bean类类型(自定义类型)

  数组类型的操作如下:

//User.java文件中的代码public  User(Object[]  array){  System.out.println("数组");  for(Object object: array){   System.out.println(object);  } }
<!-- application.xml文件中的代码-->
<!-- 将Date类引用 --><bean name="bi" class="java.util.Date"></bean>
<bean class="com.zzj.ov.User">
    <constructor-arg>
    <array>
        <!--同样的基本类型和String类型直接使用value赋值-->
        <value>12</value>
        <value>Tom</value>
        <!--类类型使用ref引用-->
        <ref bean="bi"/>
         <!--或者直接使用bean将类引用-->
        <bean class="java.lang.String">
            <constructor-arg value="HAHA"></constructor-arg>
        </bean>
    </array>
    </constructor-arg>
</bean>    
//测试文件的代码
public class Test {
    public static void main(String[] args){
        new ClassPathXmlApplicationContext("application.xml");
    }
}

④集合类型

  List:constructor-arg ——>list——>value(String类型、基本数据类型或其包装类),ref>bean类类型(自定义类型)

//User.java文件中的代码public  User(List<Object> list){
    System.out.println("List集合");
    for(Object object: list){
        System.out.println(object);
    }
}
<!--application.xml文件中的代码--><bean name="bi" class="java.util.Date"></bean><bean class="com.zzj.ov.User">
    <constructor-arg>
        <list>
        <value>12</value>
        <value>Tom</value>
        <ref bean="bi"/>
        <bean class="java.lang.String">
            <constructor-arg value="HAHA"></constructor-arg>
        </bean>
    </list>
    </constructor-arg>
</bean>
//测试文件的代码
public class Test {
    public static void main(String[] args){
       new ClassPathXmlApplicationContext("application.xml");
  }}

  Set:constructor-arg ——>set——>value(String类型、基本数据类型或其包装类),ref>bean类类型(自定义类型)

//User.java文件中的代码
public  User(Set<Object> set){
    System.out.println("Set集合");
    for(Object object: set){
        System.out.println(object);
    }
}
<!--application.xml文件中的代码-->
<bean name="bi" class="java.util.Date"></bean>
<bean class="com.zzj.ov.User">
    <constructor-arg>
    <set>
        <value>12</value>
        <value>Tom</value>
        <ref bean="bi"/>
        <bean class="java.lang.String">
            <constructor-arg value="HAHA"></constructor-arg>
        </bean>
    </set>
    </constructor-arg>
</bean>
//测试文件的代码
public class Test {
    public static void main(String[] args){
       new ClassPathXmlApplicationContext("application.xml");
  }
}

  

  Map:constructor-arg ——>map——>

  entry:key或value是String类型、基本数据类型或其包装类,则分别使用entry标签中key和value标签属性

  entry:key或value是类类型(自定义类型),应该使用对相应的key-ref或value-ref

//User.java中的代码
public User(Map<String,Object> map){
    System.out.println("Map集合");
    Set<String> keys = map.keySet();
    for(String key : keys){
        System.out.println(key + ":" + map.get(key));
    }
}
<!--application.xml文件中的代码-->
<bean name="bi" class="java.util.Date"></bean>
<bean class="com.zzj.ov.User">
    <constructor-arg>
    <map>
        <entry key="name" value="Tom"></entry>
        <entry key="age" value="12"></entry>
        <entry key="birth" value-ref="bi"></entry>
    </map>
    </constructor-arg>
</bean>
//测试文件的代码
public class Test {
    public static void main(String[] args){
       new ClassPathXmlApplicationContext("application.xml");
  }
}

⑤Properties:constructor-arg ——>props——>prop 只能配置String类型

//User.java文件中的代码如下
public User(Properties properties){
    System.out.println(properties.get("driver"));
    System.out.println(properties.get("userName"));
    System.out.println(properties.get("password"));
    System.out.println(properties.get("url"));
}
<!--application.xml文件中的代码-->
<bean name="bi" class="java.util.Date"></bean>
<bean class="com.zzj.ov.User">
    <constructor-arg>
    <props>
        <prop key="driver">com.mysql.jdbc.Driver</prop>
        <prop key="userName">root</prop>
        <prop key="password">root</prop>
        <prop key="url">jdbc:mysql://127.0.0.1:3306/test</prop>
    </props>
    </constructor-arg>
</bean>
//测试文件的代码
public class Test {
    public static void main(String[] args){
       new ClassPathXmlApplicationContext("application.xml");
  }
}

⑥setter方法(两种,需要在命名空间中选中p)

//User.java中的代码
private String id;
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}

private String name;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
<!--application.xml文件中的代码-->
<!--第一种直接在bean标签里用p方法,第二种使用property标签-->
<bean class="com.zzj.ov.User" p:id-ref="bi" p:name="Tom">
    <property name="name" value="Tom"></property>
    <property name="id" ref="bi"></property>
</bean>
//测试文件的代码
public class Test {
    public static void main(String[] args){
       new ClassPathXmlApplicationContext("application.xml");
  }
}

原文地址:https://www.cnblogs.com/yimengxianzhi/p/12146247.html

时间: 2024-10-30 16:17:40

构造方法与setter方法的相关文章

spring 构造方法注入和setter方法注入的XML表达

1.构造方法注入 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" > 3 <beans> 4 <bean id="person&quo

使用setter方法和构造方法装配Bean

本篇就简单的说一下Bean的装配和AOP本篇的项目是在上一篇我的Spring学习记录(一) 中项目的基础上进行开发的 1. 使用setter方法和构造方法装配Bean 1.1 前期准备 使用setter方法注入依赖其实在上一篇中已经遇到过了主要通过property在bean中进行注入 <!--声明一个bean并且指定相应的类--> <bean name="dog" class="cn.lger.domain.Dog"> <propert

Java网络编程从入门到精通(18):Socket类的getter和setter方法(2)

二.用于获得和设置Socket选项的getter和setter方法 Socket选择可以指定Socket类发送和接受数据的方式.在JDK1.4中共有8个Socket选择可以设置.这8个选项都定义在java.net.SocketOptions接口中.定义如下: public final static int TCP_NODELAY = 0x0001;    public final static int SO_REUSEADDR = 0x04;    public final static int

lombok注解为java类生成Getter/Setter方法

1. 先到lombok官网下载lombok.jar包 : http://projectlombok.org/ 2. 下载了之后的两种安装方法: 1. 双击下载下来的 JAR 包安装 lombok 我选择这种方式安装的时候提示没有发现任何 IDE,所以我没安装成功,我是手动安装的.如果你想以这种方式安装,请参考官网的视频. 2.eclipse / myeclipse 手动安装 lombok 1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹

理解Struts2的Action中的setter方法是怎么工作的

接触过webwork和Struts2的同行都应该知道, 提交表单的时候,只要Action中的属性有setter 方法,这些表单数据就可以正确赋值到Action中属性里:另外对于Spring配置文件中声明的bean,也可以在Action中声明setter 方法将其注入到Action实例中.那么现在要研究:这些是怎么工作的呢? (1)提交表单时的参数 在struts2-core-2.3.1.2.jar压缩包内的struts-default.xml配置文件中有这个配置:<interceptor nam

魏兆辉的IOS基础学习笔记之九 OC语言基础-04 getter和setter方法

存取方法分为两种:setter方法和getter方法.setter方法,是为对象中的变量赋值.getter方法,是通过对象本身访问对象属性. 在Objective-c中,Cocoa框架在定义存取方法的时候,有相关的规定: (1). setter方法,根据它的所要去改变的属性名称来命名,并在前面加set前缀.如:setEngine,setTire等. (2). getter方法,则是以其返回的属性名称来命名,不要将get前缀加到getter方法名前面.因为在Cocoa中,get前缀有其他的用途.一

有一个NSStirng类型,retain方式声明的name属性的setter方法内部每一行代码的作用?

- (void)setName:(NSString *)name { 判断原有对象和新对象是否是同一个对象,如果是同一个,就没有必要再重新赋值,否则会先release 再retain,就会变成野指针 if (_name != name) { 释放保有之前对象的所有权 [_name release]; 让实例变量 _name保有新的对象的所有权 _name = [name retain]; } } 有一个NSStirng类型,retain方式声明的name属性的setter方法内部每一行代码的作用

JavaScript中闭包实现的私有属性的getter()和setter()方法

注意: 以下的输出都在浏览器的控制台中 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>闭包</title> </head> <body> <script type="text/javascript"> /** * 利用闭包实现 * 这个函数给对象o增加了属性存储器方法 * 方法名称为ge

OC7_复合类内存管理(setter方法)

// // Person.h // OC7_复合类内存管理(setter方法) // // Created by zhangxueming on 15/6/18. // Copyright (c) 2015年 zhangxueming. All rights reserved. // #import <Foundation/Foundation.h> #import "Dog.h" @interface Person : NSObject { Dog *_dog; } -