【Spring】---属性注入
一、Spring注入属性(有参构造和【set方法】)

注意:在Spring框架中只支持set方法、有参构造方法这两种方法。
使用有参数构造方法注入属性(用的不多,但需要知道):
实体类
package com.tyzr.property;
public class PropertyDemo1 {
private String username;
public PropertyDemo1(String username) {
this.username = username;
}
public void test1(){
System.out.println("demo1-------------->"+username);
}
}
配置文件
<bean id="demo1" class="com.tyzr.property.PropertyDemo1">
<!-- 使用有参数注入 name就是属性名字 -->
<constructor-arg name="username" value="小小旺旺"></constructor-arg>
</bean>
测试类
@Test
public void testUser(){
//加载核心配置文件,创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//得到我们配置的对象
//<bean id="user" class="com.tyzr.ioc.User"></bean>
PropertyDemo1 propertyDemo1 = (PropertyDemo1)context.getBean("demo1");
propertyDemo1.test1();
}
使用set方法注入属性(重点:这个方法用的最多):
实体类
public class Book {
private String bookName;
public void setBookName(String bookName) {
this.bookName = bookName;
}
public void demobook(){
System.out.println("book-------->"+bookName);
}
}
配置文件
<bean id="demo2_book" class="com.tyzr.property.Book">
<!-- 注入属性值 -->
<property name="bookName" value="Java程序设计"></property>
</bean>
测试类
@Test
public void testUser(){
//加载核心配置文件,创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//得到我们配置的对象
//<bean id="user" class="com.tyzr.ioc.User"></bean>
Book book = (Book)context.getBean("demo2_book");
book.demobook();
}
二、Spring注入对象类型属性(重点)
在工作中,action中要new Service,而Service中要new Dao。所以我们现在把new的过程如何实现。
场景:
创建Service和Dao,在Service中得到Dao对象。
实现过程:
1、在Service里面把dao作为类型属性
2、生成dao类型属性的set方法
public class UserSerivce {
//定义dao类型属性
private UserDao userDao;
//生成set方法
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void add(){
System.out.println("serivce-------------");
//之前的做法
//UserDao userdao = new UserDao();
//userdao.add();
//现在我们要把上面这个new的过程交给spring处理
userDao.add();
}
}
3、注入对象属性
配置文件
<!-- 注入对象类型属性 -->
<!-- 1 配置service和dao对象 -->
<bean id="userdao" class="com.tyzr.ioc.UserDao"></bean>
<bean id="userService" class="com.tyzr.ioc.UserSerivce">
<!--
在这里注入dao对象
name:service类里面属性的名称
现在不能写value属性,上一个例子是字符串,现在是一个对象
需要写ref:值是dao配置bean标签id的值
-->
<property name="userDao" ref="userdao"></property>
</bean>
测试类
@Test
public void testUser(){
//加载核心配置文件,创建对象
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//得到我们配置的对象
//<bean id="user" class="com.tyzr.ioc.User"></bean>
UserSerivce userSerivce = (UserSerivce)context.getBean("userService");
userSerivce.add();
}
三、Spring注入复杂数据
- 数据
- LIST
- MAP
- Properties类型
public class Person {
private String pname;
private String [] arrs;
private List<String> list;
private Map<String,String> map;
private Properties properties;
public void setArrs(String[] arrs) {
this.arrs = arrs;
}
public void setList(List<String> list) {
this.list = list;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void setPname(String pname) {
this.pname = pname;
}
public void test1(){
//System.out.println("pname="+pname);
System.out.println("arrs="+arrs);
System.out.println("list="+list);
System.out.println("map="+map);
System.out.println("properties="+properties);
}
}
配置文件
<bean id="person" class="com.tyzr.property.Person">
<!-- 数组 name:数组的对象名称 -->
<property name="arrs">
<list>
<value>1</value>
<value>2</value>
<value>3</value>
<value>4</value>
<value>5</value>
</list>
</property>
<!-- List -->
<property name="list">
<list>
<value>111</value>
<value>222</value>
<value>333</value>
<value>444</value>
<value>555</value>
</list>
</property>
<!-- Map -->
<property name="map">
<map>
<entry key="a" value="aa"></entry>
<entry key="b" value="bb"></entry>
<entry key="c" value="cc"></entry>
<entry key="d" value="dd"></entry>
</map>
</property>
<!-- properties -->
<property name="properties">
<props>
<prop key="jdbcdirver">com.mysql.jdbc.Driver</prop>
<prop key="jdbcurl">jdbc:mysql:///test</prop>
</props>
</property>
</bean>
【Spring】---属性注入的更多相关文章
- Spring 属性注入(一)JavaBean 内省机制在 BeanWrapper 中的应用
Spring 属性注入(一)JavaBean 内省机制在 BeanWrapper 中的应用 Spring 系列目录(https://www.cnblogs.com/binarylei/p/101174 ...
- Spring 属性注入(二)BeanWrapper 结构
Spring 属性注入(二)BeanWrapper 结构 Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) BeanWrap ...
- Spring 属性注入(三)AbstractNestablePropertyAccessor
Spring 属性注入(三)AbstractNestablePropertyAccessor Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117 ...
- Spring 属性注入(四)属性键值对 - PropertyValue
Spring 属性注入(四)属性键值对 - PropertyValue Spring 系列目录(https://www.cnblogs.com/binarylei/p/10117436.html) P ...
- spring 属性注入
Spring的核心技术室依赖注入,下面是依赖注入之属性注入的实现过程,牛刀小试,请看效果. 1.首先添加Spring.Web引用.本例中是使用分层思想来演示的,下面是项目的结构和UserModel类的 ...
- Spring属性注入、构造方法注入、工厂注入以及注入参数(转)
Spring 是一个开源框架. Spring 为简化企业级应用开发而生(对比EJB2.0来说). 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring ...
- 六 Spring属性注入的四种方式:set方法、构造方法、P名称空间、SPEL表达式
Spring的属性注入: 构造方法的属性注入 set方法的属性注入
- spring属性注入
1,set方法注入 (1)对于值类型的属性: 在对象中一定要有set方法 package com.songyan.demo1; import com.songyan.injection.Car; /* ...
- java spring属性注入
一.创建对象时候,向类里面属性设置值:一般有三个方式 1) .有参构造, 2). set**** 3).接口注入 二. 在spring框架里面,支持前面两种方式: 1).有参构造方法 用constr ...
- spring属性注入DI
spring setter方式注入: 注入对象属性: 前提: 在bean对应实体中有对应的setter方法. 基础代码: 在bean中有另一个bean属性的setter方法. package cn.i ...
随机推荐
- Qualcomm_Mobile_OpenCL.pdf 翻译-2
2 Opencl的简介 这一章主要讨论Opencl标准中的关键概念和在手机平台上开发Opencl程序的基础知识.如果想知道关于Opencl更详细的知识,请查阅参考文献中的<The OpenCL ...
- [BZOJ1299]巧克力棒(博弈论,线性基)
[BZOJ1299]巧克力棒 Description TBL和X用巧克力棒玩游戏.每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度.TBL先手两人轮流,无法操作的人输. ...
- 【HDU2089】不要62
题目大意:求区间 [n,m] 中数位不包含 4 和 62 的数字的个数. 题解:数位dp. 预处理出 \(f[i][j]\) 表示 i 位数字中以 j 为第一位的满足条件的数字个数. 对于统计答案来说 ...
- Python之网络编程之concurrent.futures模块
需要注意一下不能无限的开进程,不能无限的开线程最常用的就是开进程池,开线程池.其中回调函数非常重要回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去自己加 ...
- webpack 搭建React(手动搭建)
前言 最近真的都是在瞎学,看到自己不是很明白的东西,都喜欢自己手动去敲1到3遍(晚上下班的时候咯), 瞧,React 基于webpack 搭建,react 官方有一套手脚架工具,我自己也搭建过确实挺 ...
- springboot 配置quart多数据源
Springboot版本为2.1.6 多数据源配置使用druid进行配置,数据库使用的为Oracle11g,如果使用的是MySQL,直接将数据库的地址和驱动改一下即可 <parent> & ...
- ESP8266 SPI通信
设备与设备之间的通信往往都伴随着总线的使用,而用得比较多的就当属于SPI总线和I2C总线,而恰巧NodeMcu也支持这两种总线通信 1. SPI总线——SPI类库的使用 SPI是串行外设接口(Seri ...
- Node.js的url模块简介
什么是URL URL是Uniform Location Resource的缩写,翻译为“统一资源定位符”,也就是描述资源位置的固定表示方法.被URL描述的资源可以位于互联网上,也可以位于本地. URL ...
- GO语言学习笔记5-defer的使用
1. 什么是defer defer是Go语言提供的一种用于注册延迟调用的机制:让函数或语句可以在当前函数执行完毕后(包括通过return正常结束或者panic导致的异常结束)执行. 2. defer的 ...
- 实验 5 Spark SQL 编程初级实践
实验 5 Spark SQL 编程初级实践 参考厦门大学林子雨 1. Spark SQL 基本操作 将下列 json 数据复制到你的 ubuntu 系统/usr/local/spark 下,并 ...