上一个随笔提到了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");
  }
}

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

  1. Java中构造方法与setter方法

      今天在重温Java的同时,一个不是问题的问题,突然地冒出来,不知道大家是不是和我一样,也有过这个比较尴尬的问题 不啰嗦了,那咱就直接说问题吧~~~ 那么首先我们在Java中都会写构造函数,目的是在 ...

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

    1.构造方法注入 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC ...

  3. spring构造函数注入、setter方法注入和接口注入

    Spring开发指南中所说的三种注入方式: Type1 接口注入 我们常常借助接口来将调用者与实现者分离.如: public class ClassA { private InterfaceB clz ...

  4. 基于注解处理器开发自动生成getter和setter方法的插件

    昨天无意中,逛到了lombok的网站,并看到了首页的5分钟视频,视频中的作者只是在实体类中写了几个字段,就可以自动编译为含setter.getter.toString()等方法的class文件.看着挺 ...

  5. 一篇文章看懂java反射机制(反射实例化对象-反射获得构造方法,获得普通方法,获得字段属性)

    Class<?> cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象传入一个包名+类名的字符串就可以得到C ...

  6. spring--Autowired setter 方法

    在Spring中,可以使用 @Autowired 注解通过setter方法,构造函数或字段自动装配Bean.此外,它可以在一个特定的bean属性自动装配. 注 @Autowired注解是通过匹配数据类 ...

  7. Spring-Context之六:基于Setter方法进行依赖注入

    上文讲了基于构造器进行依赖注入,这里讲解基于Setter方法进行注入.在Java世界中有个约定(Convention),那就是属性的设置和获取的方法名一般是:set+属性名(参数)及get+属性名() ...

  8. IOS model的getter和setter方法

    总结: 当使用 self.str1 = @"xxx";时, 系统自动调用 setter方法 param_str = self.str1; 自动调用getter方法注意: 只在对象点 ...

  9. ARC以及MRC中setter方法

    ARC以及MRC中setter方法的差异 有时候,你会需要重写setter或者getter方法,你知道么,ARC与MRC的setter方法是有着差异的呢. 先看下MRC下的setter方法: 在看下A ...

随机推荐

  1. js中的原生Ajax和JQuery中的Ajax

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). js中的Ajax: 参数介绍: open(String method,Str ...

  2. 九 AOP的概述

    AOP : 面向切面编程,解决OOP(面向对象编程)开发遇到的问题,是oop的延伸和扩展 AOP的优点:不修改源码的情况下,对程序进行校验,日志记录,性能控制,事务控制 SpringAOP底层的实现原 ...

  3. Spring学习(三)

    DI (Dependency Injection) 1.依赖注入,组件之间的依赖关系由容器在运行期间决定.Ioc容器注入应用程序某个对象,它所需要的外部资源(包括对象,资源,常量数据). birthd ...

  4. 四阶幻方-蓝桥杯-DFS

    答案:416 用next_permutation()全部排列的话会超时 所以用dfs搜索,只搜索前三行就好,前三行确定之后,第四行也就确定 #include<iostream> #incl ...

  5. k种球若干,取n个球,输出所有取球方案 (模拟)

    有K种颜色的小球(K<=10),每种小球有若干个,总数小于100个. 现在有一个小盒子,能放N个小球(N<=8),现在要从这些小球里挑出N个小球,放满盒子. 想知道有哪些挑选方式.注:每种 ...

  6. vue + element ui table表格二次封装 常用功能

    因为在做后台管理项目的时候用到了大量的表格, 且功能大多相同,因此封装了一些常用的功能, 方便多次复用. 组件封装代码: <template> <el-table :data=&qu ...

  7. Linux centos VMware Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理

    一.Nginx防盗链 配置如下,可以和上面的配置结合起来 location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|x ...

  8. 实现JSP部分内容继承

    我们的网站框架搭好以后,只需要主体部分显示不同的数据. 如果每次代码重写都会造成冗余. 今天欣赏别人代码,学到了 maven 核心代码 <dependency> <groupId&g ...

  9. YUV 和 YCbCr 辨析

    YCbCr或Y'CbCr 是在世界数字组织视频标准研制过程中作为ITU-R BT1601 建议的一部分, 其实是YUV经过缩放和偏移的翻版. 通常会用于影片中的影像连续处理,或是数字摄影系统中. 其中 ...

  10. Using Watch Mode

    官方文档地址:https://webpack.js.org/guides/development/#using-watch-mode You can instruct webpack to " ...