Spring 属性输入和实例化操作_总结
2024-08-27 18:05:39
Spring 之 applicationContext.xml 配置
默认实例化(无参构造)
//被实例化对象
package cn.ibbidream.Bean; public class Bean1 {
//3.1.1 默认无参构造 public Bean1() {
System.out.println("无参构造启动了");
}
} //配置文件
<bean id="bean1" class="cn.ibbidream.Bean.Bean1">
<!--
默认无参构造器:
要求:必须有一个无参的构造器
-->
</bean> //测试代码
public void bean1(){
//加载配置文件
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //初始化对象
Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");
}
静态工厂实例化(不常用)
//被实例化对象
package cn.ibbidream.web; public class bean2 {
public bean2() {
System.out.println("Bean2 初始化");
}
} //创建静态工厂类
package cn.ibbidream.web; public class BeanFactory {
public static bean2 getBean2(){
System.out.println("静态方法执行了");
return new bean2();
}
} //xml 配置文件
<!-- 静态工厂方法实例化bean:
factory-method:通过该静态工厂中的方法创建bean
-->
<bean id="bean2" class="cn.ibbidream.web.BeanFactory" factory-method="getBean2"></bean> //测试代码
@Test
public void bean2(){
//加载配置文件
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); //初始化对象
bean2 bean2 = (bean2) applicationContext.getBean("bean2");
}
属性注入值-无参构造注入
<bean id="serviceHello" class="cn.ibbidream.quickstart.impl.HelloServiceimpl">
<!--
property:给对象注入属性
name:属性的名称
value:属性的值
-->
<property name="name" value="张三"></property>
</bean>
属性注入值-有参构造注入
<!-- 有参构造注入属性 -->
<bean id="car1" class="cn.ibbidream.Test.Car">
<!--
index:通过索引号注入,表示注入的是第几个属性
type:通过属性的类型注入
name:通过属性名称注入
value:属性的值
--> <constructor-arg index="0" value="比亚迪 秦100"></constructor-arg>
<constructor-arg index="1" value="220000"></constructor-arg>
</bean>
属性注入值-set注入
<!--
set方法注入普通属性
property:通过set方法注入属性
-->
<bean id="car2" class="cn.ibbidream.Test.Car2">
<!--
name:属性的名称,需要和set方法上的名称对应而不是成员变量的名称
value:属性值
-->
<property name="name" value="奥迪 A4"></property>
<property name="price" value="180000"></property>
</bean>
属性注入值-set注入对象
<!--
set方法注入一个对象
-->
<bean id="user1" class="cn.ibbidream.Test.User1">
<!--
name:属性名称
value:属性值
ref:引入一个bean作为属性进行注入,可以是id,也可以是name
-->
<property name="name" value="张三"></property>
<property name="car2" ref="car2"></property>
</bean>
属性注入值-p标签注入
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<!-- 注意一定要引入P标签 --> xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--
使用p名称空间进行属性的注入
p:name:name属性的值
p:price:price属性的值
-->
<bean id="car3" class="cn.ibbidream.Test.Car2" p:name="奔驰" p:price="800000"></bean>
<!--
使用p名称空间进行属性的注入
p:name:name属性的值
p:car2-ref:car2属性的引用
-->
<bean id="car4" class="cn.ibbidream.Test.User1" p:name="张三" p:car2-ref="car2"></bean> </beans>
最新文章
- iOS9和Xcode7
- Servlet从本地文件中读取图片,并显示在页面中
- UITableView中Cell和section的插入与删除
- 布局文件中fill_parent、match_parent和wrap_content有什么区别?
- python 数据加密以及生成token和token验证
- ubuntu1604安装体验
- Python OpenCV —— Border
- 中断——中断描述符表的定义和初始化(一) (基于3.16-rc4)
- AMD和CMD的区别
- POJ 2472 106 miles to Chicago(Dijstra变形——史上最坑的最长路问题)
- Leetcode题解(十二)
- Lintcode212 Space Replacement solution 题解
- 基于RNN的音频降噪算法 (附完整C代码)
- VC++ 6.0中添加库文件和头文件
- windows 10 更新失败及应用商店重装问题解决记录
- SVN四部曲之SVN设置详解深入
- ElasticSearch排序Java api简单Demo
- 多网卡的7种bond模式原理 For Linux
- python 分布式进程体验
- MATLAB(3)——GUI界面设计入门