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.注入对象 在配置文件中配置如下: 前面两者不能同时注入: 入 如果前两者同时注入将会报错 将注入修改以后,如下图: 修改 ...
随机推荐
- eclipse+PyDev遇到字符UTF-8的问题
今天配置eclipse+PyDev,在配置的时候出现了问题,如下: python and jpython require at least version 2.1 and iron python 2. ...
- C#修改注册表
某次需要使用C#对注册表进行操作,不过却发现没有权限,研究了以下发现是当前系统用户的问题.除非当前系统用户是Administrator,否则就会给你抛出一个异常.后来在网上发现了一个方法,原来C#也可 ...
- C#拦截系统消息
首先我们看下有哪几种拦截系统消息的方法: //一.截取系统消息//方法一://添加监视消息private void Form_Load(object sender, System.EventArgs ...
- php解析HTML
PHP Simple HTML DOM 解析器显然是相当不多的html文件解析工具.他能够在server端採用相似于jquery的方式进行dom查找和改动.眼下这个解析器支持PHP5. 可是,这个首先 ...
- 一步搞定私有Git服务器部署(Gogs)
http://www.jianshu.com/p/424627516ef6 零.安装 Docker 和 Compsoe 首先安装 Docker: $ curl -sSL https://get.doc ...
- Chrome 解决flash问题
Chrome 无法显示使用插件的内容 Chrome 不再支持很多插件.不过网站创建者已经通过更安全的方式,将多数这类功能添加到 Chrome 中. 为什么 NPAPI 插件现在无法正常运行过去,许多插 ...
- 洛谷3343(ZJOI2015)地震后的幻想乡
题目:https://www.luogu.org/problemnew/show/P3343 1.那个时间与边的大小排名有关,所以需要求一下最大边的期望排名就行. 2.期望排名是这样算的:(排名为1的 ...
- erp中三大订单CO、PO、MO
ERP即 企业资源计划 (Enterprise Resource Planning),由美国 Gartner Group 公司于1990年提出. ERP系统是指建立在信息技术基础上,以系统化的管理思想 ...
- CSS背景图像的简单响应
本文设有很多,最理想的解决方案,响应图像只是其中之一.我们建议您查看不同的方法,然后再选择一个特定的响应图像解决方案,包括这两个:如何避免重复下载响应图像中选择响应图像解决方案. 大家都在谈论的的sr ...
- unity代码添加动画,并传参数
测试界面 button一个 sprite一个 测试代码 public class BgObject : MonoBehaviour { void Start() { List<string> ...