Spring的两种属性注入方式
Spring包下载地址:http://repo.spring.io/release/org/springframework/spring/
jar包下载:http://www.manyjar.com/showJar/m.html
1.set方式注入
配置文件:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><!-- 使用set方法注入属性 singleton 单实例 默认 prototype 多实例 --><bean id="user" class="com.spring.demo1.User" scope="singleton"><!-- 注入属性值 name的属性值就是类里面定义的属性名称value设置具体值--><property name="bookname" value="程序设计"></property></bean></beans>
测试代码:
package com.spring.demo1;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestIOC { public static void main(String[] args) { //1.加载spring配置文件,根据配置创建对象 ApplicationContext context = (ApplicationContext) new ClassPathXmlApplicationContext("config.xml"); //2.得到配置创建的对象 User user=(User) context.getBean("user");//强转,引号内为配置文件中的id名 User user1=(User) context.getBean("user"); System.out.println(user);//单实例输出地址 System.out.println(user1);//多实例输出地址不一样 user.add();//方法调用 }}
package com.spring.demo1;public class User {private String bookname;//只需要构造一个set方法public void setBookname(String bookname) {this.bookname = bookname;}public void add(){System.out.println("bookname......"+bookname);}}
测试结果:
2.有参构造注入
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"><bean id="HelloWorld" class="com.gc.action.HelloWorld"><!-- 有参构造注入 --> <constructor-arg index="0"><value>HelloWorld1</value> </constructor-arg> </bean> </beans>
测试代码:
package com.gc.test;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;import com.gc.action.HelloWorld;public class TestHelloWorld {public static void main(String[] args) {ApplicationContext actx=(ApplicationContext) new ClassPathXmlApplicationContext("applicationContext.xml");HelloWorld helloworld=(HelloWorld) actx.getBean("HelloWorld");System.out.println(helloworld.getMsg());} }
package com.gc.action;public class HelloWorld {public String msg=null;//添加构造方法实现构造注入public HelloWorld(String msg) {super();this.msg = msg;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}
结果:
新看了一个P名称空间注入:
config.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 引入p名称空间 ,最后以p结尾--> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <!-- p名称空间注入 --> <bean id="person" class="com.spring.property.Person" p:name="lucy"></bean> </beans>
Person.java
package com.spring.property;public class Person {private String name;public void setName(String name) {this.name = name;}public void test1(){System.out.println("person"+name);} }
Testp.java
package com.spring.property;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;public class Testp {public static void main(String[] args) {ApplicationContext context=new ClassPathXmlApplicationContext("config.xml");Person person=(Person) context.getBean("person");person.test1();} }
测试结果:
转载于:https://www.cnblogs.com/liurg/p/7942374.html
Spring的两种属性注入方式相关推荐
- Spring中IoC两种接口和两种依赖注入方式的比较
spring是一个开源框架,是为了解决企业应用程序开发的复杂性而创建的,为J2EE应用程序开发提供集成的框架.简单来说,spring是一个轻量级的控制反转IOC和面向切面AOP的容器框架.spring ...
- 【闲谈】论Spring的三种依赖注入方式
知识点科普: IOC和DI:IOC是控制反转,DI是依赖注入.DI是行为,而IOC是实现这一行为的容器. 循环依赖:指类与类之间互相依赖的情况,比如有类A和类B,类A中依赖类B,类B中依赖类A,由此导 ...
- Spring 的3种依赖注入方式
1.属性注入: 通过setter方法注入Bean的属性值或依赖的对象 属性注入使用<proper>元素,使用Bean属性指定Bean的属性名称,value属性或<Value>子 ...
- SSH 框架集成的时候 sessionFactory 混合使用了两种 的注入方式错误分析
之前在理解 sessionFactory的注入方式的时候出现了一下的bug 我的有关代码是这样子DAO实现类代码是这样子的 出现了以下的错误: 严重 [RMI TCP Connection(5)-12 ...
- spring四种依赖注入方式
平常的java开发中,程序员在某个类中需要依赖其它类的方法,通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. spring提出了依赖注入的思想,即依赖不由程序 ...
- Java框架篇---spring aop两种配置方式
Java框架篇---spring aop两种配置方式 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步: 1. 使用注解@Aspect来定义一个切面,在切面中 ...
- 【Spring】Spring中AOP解析 上 两种动态代理方式与ProxyFactory代理工厂
1.两种动态代理方式演示 1.1 JDK动态代理 JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程.要求被代理类必须实现一个接口 . 如下案 ...
- 两种依赖注入的类型是什么?
两种依赖注入的类型分别是setter注入和构造方法注入. setter注入: 一般情况下所有的java bean, 我们都会使用setter方法和getter方法去设置和获取属性的值,示例如下: pu ...
- JSP页面中的pageEncoding和contentType两种属性
关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是jsp文件本身的编码 contentType的charset是指服务器发送给客户端时的内容 ...
最新文章
- 抽象工厂模式_常用设计模式--抽象工厂模式
- 20分钟学会CMake
- Java web对试卷进行单选多选答题进行打分_java + vue 考试系统,适配各种题型,包含微信小程序端...
- 【项目管理】进度管理
- Openwrt按键检测分析-窥探Linux内核与用户空间通讯机制netlink使用
- 2018-2019-20172329 《Java软件结构与数据结构》第九周学习总结
- NSString 中包含中文字符时转换为NSURL
- com.android.phone已停止运行怎么解决方法,com.android.phone已停止运行怎么解决
- 创业冲突的五种解决方法是_不会说话,不懂处理人际冲突怎么办?《沟通的艺术》5步教会你...
- Oracle Enterprise Linux 64-bit 下Oracle11g的监听配置改动及測试步骤
- JavaScript随机生成信用卡卡号的方法
- Xcel 测试版使用手册
- POI加密Excel文件导出
- mysql 3358端口_好用的MySQL抓包工具:sniffer-agent
- 短视频拍摄5大景别及11种运镜手法,新手必备拍摄干货丨国仁网络资讯
- easyswoole 使用 从thinkphp5.1数据库ORM类库
- dubbo系列三、 服务发现RegistryDirectory
- 介绍旅游网站建设与优化技巧
- 兔子繁衍问题(PTA)
- 实验六2021011206贾天乐
热门文章
- 语言取10的整数倍_C语言结构体用法很多,坑也很多
- linux的11186端口,linux – CentOS – semanage – 删除端口范围
- css3蒙版运动,纯CSS3制作逼真的汽车运动动画
- java 运行时路径_如何在运行时检查当前Java类路径(重复)
- 计算机三级网络操作题,计算机等级考试三级网络技术考试模拟试题
- new arraylist内存_Java内存泄漏分析工具Memory Analyzer Tool
- kylin如何支持flink_如何使用 JuiceFS 在云上优化 Kylin 4.0 的存储性能?
- java null 对象吗_java中new一个对象和对象=null有什么区别
- 数据分析数据拼接案例
- Oracle 11g安装图文攻略