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来管理分布 ...
随机推荐
- 进度条(progress_bar)
环境:linux.centos6.5 #include<stdio.h> #include<unistd.h> int main() { ]={'\0'}; char ch[] ...
- 关于SGA中的granule size
1.什么是granule? granule直译为颗粒,ORACLE为SGA 中的组件(eg:log buffer/db buffer/large pool等)分配的最小单元为一个granule. 所以 ...
- 实现一个简单的C++协程库
之前看协程相关的东西时,曾一念而过想着怎么自己来实现一个给 C++ 用,但在保存现场恢复现场之类的细节上被自己的想法吓住,也没有深入去研究,后面一丢开就忘了.近来微博上看人在讨论怎么实现一个 user ...
- Bashu2445 -- 【网络流24题-10】餐巾问题
2445 -- [网络流24题-10]餐巾问题 Description 一个餐厅在相继的n天里,每天需要用的餐巾数不尽相同.假设第i天需要ri块餐巾(i=1,2,…,n).餐厅可以购买新的餐巾,每块餐 ...
- AndroidStudio制作“我”的界面,设置,修改密码,设置密保和找回密码
前言 大家好,给大家带来AndroidStudio制作"我"的界面,设置,修改密码,设置密保和找回密码的概述,希望你们喜欢 学习目标 掌握修改密码功能的开发,和实现用户密码的修改: ...
- Shell-10--if
- keepalived-1
keepalived所执行的外部脚本命令建议使用绝对路径 vrrp 广播 keepalived的主要功能 1,管理LVS负载均衡软件 2,对LVS集群节点健康检查功能.Healthcheck 3,
- 命令行下查看python和numpy的版本和安装位置
命令行下查看python和numpy的版本和安装位置 1.查看python版本 方法一: python -V 注意:‘-V‘中‘V’为大写字母,只有一个‘-’ 方法二: python --versio ...
- python中不同文件中函数和类的调用
最近在学习Python的时候,遇到了一个不同文件中类无法调用的问题,搜了很多,发现很多人针对 这个问题都说的相当含糊,让我费了好大劲才把这个东东搞明白.记录一下,权且温习. 调用分两种,一种是同种文件 ...
- Java线程池(ThreadPoolExecutor)原理分析与使用
在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...