Spring - constructor-arg和property的使用示例
一、说明
constructor-arg:通过构造函数注入。
property:通过setter对应的方法注入。
二、property使用实例
1、Model代码:
public class Person {
private String name;
private int age;
private String className;
private String grade;
private List<Person> friends = new ArrayList<>();
public List<Person> getFriends() {
return friends;
}
public void setFriends(List<Person> friends) {
this.friends = friends;
}
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;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String toString(){
return "Person [name=" + name + ", classname=" + className +", age=" + age+", grade=" + grade+", friends=\n" +friends+ "]";
}
}
2、xml配置:
<bean id="person" class="models.Person">
<property name="age" value="22"/> //通过setXXX方法,所以Person对象属性不用全部设置,classname和grade未设置
<property name="name" value="liuzg"/>
<property name="friends"> //通过ref 传入已经初始化的bean wangxin和lirifeng
<list> //liuzg有两个朋友 wangxin和lirifeng
<ref bean="wangxin"/> //local只能在同一个XML中实现id引入,而bean可以跨XML文件引入,同时bean可以根据name属性进行引用,使用范围明显较广,更强大。
<ref bean="lirifeng"/>
</list>
</property>
</bean>
<bean id="wangxin" class="models.Person">
<property name="age" value="22"/>
<property name="name" value="wangxin"/>
</bean>
<bean id="lirifeng" class="models.Person">
<property name="age" value="22"/>
<property name="name" value="lirifeng"/>
</bean>
三、constructor-arg使用实例
1、Model代码:
public class Student {
private String name;
private int age;
private String className;
private String grade;
private List<Person> friends = new ArrayList<>();
public Student() {
}
public Student(String name,int age,String className,String grade,List<Person> friends){
this.friends = friends;
this.name = name;
this.age = age;
this.className = className;
this.grade = grade;
}
public String toString(){
return "student [name=" + name + ", classname=" + className +", age=" + age+", grade=" + grade+", friends=\n" +friends+ "]";
}
}
2.xml配置
<bean id="liangyuqi" class="models.Student">
<constructor-arg index="0" value="liangyuqi"/> //通过构造函数,需根据函数形参 全部设置
<constructor-arg name="age" value="18"/> //可以根据index或者name设置属性,下标从0开始。boolean的值既可以用0/1填充,也可以用true/false填充。
<constructor-arg index="2" value="1401"/>
<constructor-arg index="3" value="95"/>
<constructor-arg index="4" ref="person"/>
</bean>
四、Test
1.测试代码
public class MyTest {
public void testSpring(){
ApplicationContext context = new ClassPathXmlApplicationContext("test.xml"); //1.读取spring初始化的配置文件
Object p = context.getBean("liangyuqi"); //2.根据bean获取Student实现类对象 p
System.out.println(p);
}
}
2.输出结果 : liangyuqi的朋友有liuzg,以及显示liuzg的friends set wnagxin,lirifeng

Spring - constructor-arg和property的使用示例的更多相关文章
- 简单理解Spring之IOC和AOP及代码示例
Spring是一个开源框架,主要实现两件事,IOC(控制反转)和AOP(面向切面编程). IOC 控制反转,也可以称为依赖倒置. 所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B, ...
- (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
http://www.ityouknow.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html 这篇文章介绍如何使用 Jpa 和 ...
- Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例
Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例 一.快速上手 1,配置文件 (1)pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 ...
- Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例. 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个 Demo 来试试它的效果,越 ...
- Spring MVC-表单(Form)处理示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_form_handling.htm 说明:示例基于Spring MVC 4.1.6 ...
- Spring 中出现Element : property Bean definitions can have zero or more properties. Property elements correspond to JavaBean setter methods exposed by the bean classes. Spring supports primitives, refer
在这个ApplicationContext.xml文件中出现 如下报错 Element : property Bean definitions can have zero or more proper ...
- spring boot 日志介绍 以及 logback配置示例
https://www.cnblogs.com/flying607/p/7827460.html 以下是springboot的一个局部依赖关系: 可以看到,java util logging(jul) ...
- spring security 3 自定义认证,授权示例
1,建一个web project,并导入所有需要的lib. 2,配置web.xml,使用Spring的机制装载: <?xml version="1.0" encoding=& ...
- Spring Session实现分布式session的简单示例
前面有用 tomcat-redis-session-manager来实现分布式session管理,但是它有一定的局限性,主要是跟tomcat绑定太紧了,这里改成用Spring Session来管理分布 ...
随机推荐
- iowait过高处理
网管告警: 告警主机:YiDHLWJKFZ-js-app- 主机IP:192.168.***.*** 告警项目:system.cpu.util[,iowait] 告警时间: :: 告警等级:Warni ...
- C++回调:利用Sink
Sink的本质是利用C++的封装.继承.多态的面向对象来实现,从实现角度来说,更优于函数指针回调: // cbBysink.cpp : Defines the entry point for the ...
- Dynamic Programming | Set 1 (Overlapping Subproblems Property)
动态规划是这样一种算法范式:将复杂问题划分为子问题来求解,并且将子问题的结果保存下来以避免重复计算.如果一个问题拥有以下两种性质,则建议使用动态规划来求解. 1 重叠子问题(Overlapping S ...
- Lerning Entity Framework 6 ------ Joins and Left outer Joins
Joins allow developers to combine data from multiple tables into a sigle query. Let's have a look at ...
- poj3281构图题
题目大意:有F种食物,D种饮料N头奶牛,只能吃某种食物和饮料(而且只能吃特定的一份)一种食物被一头牛吃了之后,其余牛就不能吃了第一行有N,F,D三个整数接着2-N+1行代表第i头牛,前面两个整数是Fi ...
- Pycharm中自动生成作者,日期等信息
初次安装使用PyCharm,在新建.py文件时会发现文件头并没有什么信息,因此,使用模板会比较方便.方法如下: 1.打开PyCharm,选择File--Settings 2.依次选择Editor--- ...
- java调用高德地图api实现通过ip定位访问者的城市
所需东西:高德地图的key 注意:这个key是 web服务的key 和js的key不是一个key(若没有则自行创建,创建教程在文末) 高德地图的api文档:https://lbs.amap.com/ ...
- Spring 源码分析之 bean 实例化原理
本次主要想写spring bean的实例化相关的内容.创建spring bean 实例是spring bean 生命周期的第一阶段.bean 的生命周期主要有如下几个步骤: 创建bean的实例 给实例 ...
- 文本转音频(百度语音合成api)(python)(原创)
应之前的一家小学教育培训机构的要求设计的一款 将文字转音频的程序.(注:后面应该是生成音频才对,没有改过来) 技术难点: ①语音合成,如果没有现在这么多的云服务-百度云语音合成,我估计这个程序会费很大 ...
- python 使用PyInstaller将程序打包
PyInstaller可以用来打包python应用程序,打包完的程序就可以在没有安装Python解释器的机器上运行了.类似于C#窗体程序使用Setup Factory 9 Trial进行打包. 安装: ...