spring框架 构造方法注入
在resources里面新建applicationContext.xml
配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!--构造方法注入-->
<bean id="book1" class="com.ssz.entity.Book">
<constructor-arg name="name" value="张三三"/>
</bean>
<bean id="book2" class="com.ssz.entity.Book">
<constructor-arg name="id" value="50"/>
<constructor-arg name="name" value="李思思"/>
</bean>
<!--setter方法注入-->
<bean id="book3" class="com.ssz.entity.Book" scope="prototype">
<property name="id" value="100"/>
<property name="name" value="王五五"/>
<property name="price" value="30"/>
</bean>
<!--setter方法注入+ 集合setter方法注入-->
<bean id="book4" class="com.ssz.entity.Book" scope="prototype">
<property name="id" value="200"/>
<property name="name" value="赵六六"/>
<property name="price" value="40.08"/>
<property name="address">
<array>
<value>郑州市</value>
<value>开封市</value>
<value>南阳市</value>
<value>洛阳市</value>
</array>
</property>
</bean> <!--User类-->
<bean id="user" class="com.ssz.entity.User" destroy-method="close" init-method="init" >
<property name="id" value="001"/>
<property name="name" value="王九九"/>
<property name="age" value="26"/>
<property name="address" value="河南省郑州市"/>
</bean> <bean id="user2" class="com.ssz.entity.User">
<property name="id" value="002"/>
<property name="name" value="孙十十"/>
<property name="age" value="33"/>
<property name="address" value="河南省开封市"/>
</bean> <!--setter方法注入+ array注入-->
<bean id="book5" class="com.ssz.entity.Book" scope="prototype">
<property name="id" value="300"/>
<property name="name" value="孙七七"/>
<property name="price" value="60"/>
<property name="address">
<array>
<value>郑州市</value>
<value>开封市</value>
<value>南阳市</value>
<value>洛阳市</value>
</array>
</property>
</bean> <!--setter方法注入+ array注入 + list + map + set + Properties 集合-->
<bean id="book6" class="com.ssz.entity.Book">
<property name="id" value="400"/>
<property name="name" value="钱八八"/>
<property name="price" value="70"/>
<property name="address">
<!--array-->
<array>
<value>郑州市</value>
<value>开封市</value>
<value>南阳市</value>
<value>洛阳市</value>
</array>
</property> <!--list-->
<property name="list">
<list>
<value>10</value>
<value>100</value>
<value>1000</value>
</list>
</property>
<property name="user" ref="user2">
</property> <!--map-->
<property name="map">
<map>
<entry key="u1" value-ref="user"/>
<entry key="u2" value-ref="user"/>
</map>
</property> <!--set-->
<property name="set">
<set>
<value>java</value>
<value>C语言</value>
<value>C++</value>
<value>PHP</value>
</set>
</property> <!--Properties 集合-->
<property name="pro">
<props>
<prop key="k1">pt1</prop>
<prop key="k2">pt1</prop>
<prop key="k3">pt1</prop>
<prop key="k4">pt1</prop>
</props>
</property>
</bean> </beans>
lombok依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
创建测试类
package com.ssz; import com.ssz.entity.Book;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; public class Demo {
@Test
public void tt(){
BeanFactory bf=new ClassPathXmlApplicationContext("applicationContext.xml");//建立bean工厂
//Book book1=bf.getBean("book2",Book.class);
// Book book1=bf.getBean(Book.class);
//Book book2=bf.getBean("book3",Book.class);
//Book book2=bf.getBean(Book.class);
// Book b=bf.getBean("book",Book.class);
// book.setId(100);
// book.setName("C语言入门");
//System.out.println(book1.getPrice());
//System.out.println(book2);
//System.out.println(book1==book2);
// System.out.println(book1);
// Book bk1=bf.getBean("book4",Book.class);
// Book bk2=bf.getBean("book4",Book.class);
// Book bk3=bf.getBean("book4",Book.class);
// System.out.println(bk1==bk2);
// System.out.println(bk1==bk3);
// System.out.println(bk2==bk3);
// Book book1=bf.getBean("book6",Book.class);
// System.out.println(book1);
// for (String addr:book1.getAddress()){
// System.out.println(addr);
// }
Book book=bf.getBean("book5",Book.class);
System.out.println(book);
}
@Test
public void bb(){
// BeanFactory bf1=new ClassPathXmlApplicationContext("applicationContext.xml");
ClassPathXmlApplicationContext bf1=new ClassPathXmlApplicationContext("applicationContext.xml");
Book bk=bf1.getBean("book6",Book.class);
System.out.println(bk.getMap());
System.out.println(bk.getPro().getProperty("k1"));
for (Integer i: bk.getList()){
System.out.println(i);
}
bf1.close();
}
}
spring框架 构造方法注入的更多相关文章
- spring框架bean注入
今天学习了spring框架,刚刚入门简单的了解了spring并学习了bean的注入IOC:IOC(Inversion of Control,控制反转)不是什么技术,而是一种设计思想.它的目的是指导我们 ...
- 04 Spring框架 依赖注入(一)
整理了一下之前学习spring框架时候的一点笔记.如有错误欢迎指正,不喜勿喷. 上一节我们讲了几个bean的一些属性,用来限制我们实例创建过后的状态. 但是细心的我们会发现其实上面demo创建的实例并 ...
- spring学习笔记二:spring使用构造方法注入(set方式注入)
项目目录树: 1.spring的依赖包配置 * SPRING_HOME/dist/spring.jar * SPRING_HOME/lib/log4j/log4j-1.2.14.jar * SPRIN ...
- Spring通过构造方法注入的四种方式
通过构造方法注入,就相当于给构造方法的参数传值 set注入的缺点是无法清晰表达哪些属性是必须的,哪些是可选 的,构造注入的优势是通过构造强制依赖关系,不可能实例化不 完全的或无法使用的bean. Me ...
- 05 Spring框架 依赖注入(二)
上一节我们讲了三种信息的注入,满足一个类的属性信息的注入,但是如果我们需要向一个实例中注入另一个实例呢?就像我们创建一个学生类,里边有:姓名,性别,年龄,成绩等几个属性(我习惯把类的域叫做属性),但是 ...
- 07 Spring框架 依赖注入(四)基于注解的依赖注入
前面几节我们都在使用xml进行依赖的注入,但是在实际的开发中我们往往偏爱于使用注解进行依赖注入,因为这样更符合我们人的思维,并且更加快捷,本节就来讲述Spring基于注解的依赖注入: 信息注入注解 @ ...
- spring框架——依赖注入
依赖注入:DI 又称控制反转:IoC 项目名字spring_DI 一.implement包中定义了两个接口Food和Person 1.接口Food package org.interfaces; pu ...
- 06 Spring框架 依赖注入(三)多配置文件
在Spring前几节的学习中我们都使用了一个配置文件,就像struts2中可以包含其他的配置文件,我们能不能使用多个配置文件呢(在工程比庞大,配置比较多的时候)? Spring多配置文件分为两种: 平 ...
- spring框架里面的注入?
在Spring框架里面注入可以通过1.setter方法注入:2.构造器注入:3.注入对象 在配置文件中配置如下: 前面两者不能同时注入: 入 如果前两者同时注入将会报错 将注入修改以后,如下图: 修改 ...
随机推荐
- SUSE Linux Enterprise Server设置IP地址、网关、DNS(转载)
说明: ip:192.168.21.172 子网掩码:255.255.255.0 网关:192.168.21.2 dns:8.8.8.8 8.8.4.4 1.设置ip地址vi /etc/sysco ...
- Jmeter-线程组执行顺序控制
线程组按顺序来执行,大概思路, 1.需要控制线程组内的操作在满足某一条件才执行,那么就需要使用if或者while: 2.要使用if或者while都需要一个变量,而这个变量要在两个或多个线程组内使用,那 ...
- 《DSP using MATLAB》Problem 2.15
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- ambassador 学习八 流量拷贝说明
这个功能nginx 的mirror 插件也支持,基本原理就是数据发送后端,但是不进行响应 参考图 实现方式 原始请求 getambassador.io/config: | --- apiVersion ...
- Eclipse设置Courier New字体
使用Eclipse我们会发现在字体设置里找不到钟爱的Courier New字体.其实这个字体不是没有,只是没有显示而已,它其实隐藏起来了,只需几步便可让其现原形—— 1.找到Eclipse设置字体的地 ...
- Chrome Developer Tools 中的 Preview 不显示 HTML 的问题
Chrome Developer Tools 中的 Preview 不显示 HTML 的问题 最近升级到 Chrome V64,发现 Chrome Developer Tools 中的 Preview ...
- ios开发之-windows下面虚拟机运行osx,以及xcode
下载vmware osx镜像 https://kickass.to/os-x-mavericks-10-9-retail-vmware-image-t7981468.html (还有个链接下载不了ht ...
- Ionic 项目创建
1. Ionic介绍 Ionci 是一个强大的HTML5 应用程序框架. 可以帮助您使用Web技术,如HTML, CSS和Javascript构建原生体验的移动应用程序. Ionic主要关注外观和体验 ...
- SQL2008如何清空压缩数据库日志
SQL2008如何清空压缩数据库日志 编写人:左丘文 2015-4-10 近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQL(sql2008R2)的是日志档弄得比数据库还大,给 ...
- WinForm中Application.Idle事件用法
Application.Idle 事件 描述:当应用程序完成处理并即将进入空闲状态时发生.如果您有必须执行的任务在线程变为空闲之前,请将它们附加到此事件. public partial class F ...