Spring 三种方式注入

xiaoxiao2021-02-28  7

Spring中依赖注入有三种注入方式:

一、构造器注入: 构造器注入顾名思义就是在程序组件中实现构造器,构造器可以是一个也可以是多个。

二、设值注入(setter方式注入):设值注入就是通过setXxxx方法将bean注入到组件中

三、P命名空间注入

package cn.jjz.spring726_1; /** * Created by lenovo on 2017/7/26. */ public class Stu { private String name; //姓名 private int age; //年龄 private Car car; //车 //带参构造 public Stu(String name, int age, Car car) { this.name = name; this.age = age; this.car = car; } //无参构造 public Stu() { } //get set 方法 public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } //tostring方法 @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + ", car=" + car + '}'; } } package cn.jjz.spring726_1; /** * Created by lenovo on 2017/7/26. */ public class Car { private String name; private String color; @Override public String toString() { return "Car{" + "name='" + name + '\'' + ", color='" + color + '\'' + '}'; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } }

xml代码:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" 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.xsd"> <!--车辆--> <bean id="car" class="cn.jjz.spring726_1.Car"> <property name="name" value="布加迪威龙"></property> <property name="color" value="白色"></property> </bean> <!--设值注入--> <bean id="stu" class="cn.jjz.spring726_1.Stu"> <property name="age" value="16"></property> <property name="name" value="旺旺"></property> <property name="car" ref="car"></property> </bean> <!--构造注入--> <bean id="stu2" class="cn.jjz.spring726_1.Stu"> <!-- <constructor-arg name="age" value="11"></constructor-arg> <constructor-arg name="name" value="流光"></constructor-arg> <constructor-arg name="car" ref="car"></constructor-arg>--> <constructor-arg index="0" value="流光"></constructor-arg> <constructor-arg index="1" value="11"></constructor-arg> <constructor-arg index="2" ref="car"></constructor-arg> </bean> <!--p命名空间注入--> <bean id="stu3" class="cn.jjz.spring726_1.Stu" p:age="20" p:name="奖金" p:car-ref="car"> </bean> </beans>

 注意:  <coustructor-arg>是构造器标签元素,通过设定它的属性可以往构造器传递参数,name属性也可以换成index,index是可选属性,所谓可选并不是说在任何情况下都可以不使用,要视具体情况而定

    测试类代码:

package cn.jjz.springtest; import cn.jjz.service.DemoService; import cn.jjz.spring726_1.Stu; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * Created by lenovo on 2017/7/22. */ public class Spring726_1Test { @Test public void a(){ //设值注入 ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext726_1.xml"); Stu s= (Stu) context.getBean("stu"); System.out.println(s); //构造注入 ApplicationContext context2=new ClassPathXmlApplicationContext("applicationContext726_1.xml"); Stu s2= (Stu) context2.getBean("stu2"); System.out.println(s2); //p命名空间注入 ApplicationContext context3=new ClassPathXmlApplicationContext("applicationContext726_1.xml"); Stu s3= (Stu) context3.getBean("stu3"); System.out.println(s3); }

   

转载请注明原文地址: https://www.6miu.com/read-750170.html

最新回复(0)