Spring 属性输入和实例化操作_总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 属性输入和实例化操作_总结相关的知识,希望对你有一定的参考价值。

Spring 之 applicationContext.xml  配置

  默认实例化(无参构造)

 1 //被实例化对象
 2 package cn.ibbidream.Bean;
 3 
 4 public class Bean1 {
 5     //3.1.1    默认无参构造
 6 
 7     public Bean1() {
 8         System.out.println("无参构造启动了");
 9     }
10 }
11 
12 //配置文件
13 <bean id="bean1" class="cn.ibbidream.Bean.Bean1">
14         <!--
15         默认无参构造器:
16             要求:必须有一个无参的构造器
17          -->
18 </bean>
19 
20 //测试代码
21 public void bean1(){
22         //加载配置文件
23         ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
24 
25         //初始化对象
26         Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");
27 }

 

静态工厂实例化(不常用)
 1 //被实例化对象
 2 package cn.ibbidream.web;
 3 
 4 public class bean2 {
 5     public bean2() {
 6         System.out.println("Bean2  初始化");
 7     }
 8 }
 9 
10 //创建静态工厂类
11 package cn.ibbidream.web;
12 
13 public class BeanFactory {
14     public static bean2 getBean2(){
15         System.out.println("静态方法执行了");
16         return new bean2();
17     }
18 }
19 
20 //xml 配置文件
21 <!-- 静态工厂方法实例化bean:
22             factory-method:通过该静态工厂中的方法创建bean
23  -->
24     <bean id="bean2" class="cn.ibbidream.web.BeanFactory" factory-method="getBean2"></bean>
25 
26 //测试代码
27     @Test
28     public void bean2(){
29         //加载配置文件
30         ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
31 
32         //初始化对象
33         bean2 bean2 = (bean2) applicationContext.getBean("bean2");
34   }

 


属性注入值-无参构造注入
1 <bean id="serviceHello" class="cn.ibbidream.quickstart.impl.HelloServiceimpl">
2         <!--
3             property:给对象注入属性
4             name:属性的名称
5             value:属性的值
6          -->
7         <property name="name" value="张三"></property>
8 </bean>

 

属性注入值-有参构造注入
 1   <!-- 有参构造注入属性 -->
 2     <bean id="car1" class="cn.ibbidream.Test.Car">
 3         <!--
 4              index:通过索引号注入,表示注入的是第几个属性
 5              type:通过属性的类型注入
 6             name:通过属性名称注入
 7             value:属性的值
 8           -->
 9 
10         <constructor-arg index="0" value="比亚迪 秦100"></constructor-arg>
11         <constructor-arg index="1" value="220000"></constructor-arg>
12   </bean>

 

属性注入值-set注入
 1   <!--
 2          set方法注入普通属性
 3          property:通过set方法注入属性
 4     -->
 5     <bean id="car2" class="cn.ibbidream.Test.Car2">
 6         <!--
 7             name:属性的名称,需要和set方法上的名称对应而不是成员变量的名称
 8             value:属性值
 9          -->
10         <property name="name" value="奥迪 A4"></property>
11         <property name="price" value="180000"></property>
12   </bean>

 

属性注入值-set注入对象
 1     <!--
 2               set方法注入一个对象
 3        -->
 4     <bean id="user1" class="cn.ibbidream.Test.User1">
 5     <!--
 6         name:属性名称
 7         value:属性值
 8         ref:引入一个bean作为属性进行注入,可以是id,也可以是name
 9      -->
10         <property name="name" value="张三"></property>
11         <property name="car2" ref="car2"></property>
12     </bean>

 

属性注入值-p标签注入
 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3       <!-- 注意一定要引入P标签 --> xmlns:p="http://www.springframework.org/schema/p"
 4        xsi:schemaLocation="
 5         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 6 
 7 <!--
 8                使用p名称空间进行属性的注入
 9                p:name:name属性的值
10                p:price:price属性的值
11         -->
12     <bean id="car3" class="cn.ibbidream.Test.Car2" p:name="奔驰" p:price="800000"></bean>
13     <!--
14             使用p名称空间进行属性的注入
15             p:name:name属性的值
16             p:car2-ref:car2属性的引用
17      -->
18     <bean id="car4" class="cn.ibbidream.Test.User1" p:name="张三" p:car2-ref="car2"></bean>
19 
20 </beans>

 


以上是关于Spring 属性输入和实例化操作_总结的主要内容,如果未能解决你的问题,请参考以下文章

实例化对象和构造函数之间的关系

Spring配置文件基本要点总结

关于prototype和__proto__ 以及 constructor的文字总结

python20181217 面向对象的学习总结

spring加载bean实例化顺序

Spring总结_07_Annotation