Spring的四种注入方式

1,set注入方式:比较常用,比较简单(推荐)

    (1)编写一个简单的javabean类

package cn.zhong.com.spring.user;

import cn.zhong.com.spring.car.Car;

public class User {
	private String username ;
	private String password;
	private String sex;
	private int age;
	private Car car;

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void init(){
		System.out.println("对象初始化!");
	}
	public void destroy(){
		System.out.println("对象销毁");
	}
	public Car getCar() {
		return car;
	}
	public void setCar(Car car) {
		this.car = car;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", sex=" + sex + ", age=" + age + ", car="
				+ car + "]";
	}
}

 (2) 在配置方法中set方法注入

<!--set方法注入 bean里面name是你创建的名称空间,class为你要创建类的路径-->
<!--property里面以键值对的形式存在,name对应class里面的属性名 ,value表示为此属性赋值-->
 <bean name="user" class="cn.zhong.com.spring.user.User">
      <property name="username" value="tom"></property>
      <property name="age" value="18"></property>
      <property name="car" ref="car"></property>
</bean> 

(3)编写一个简单的测试方法:

package cn.zhong.com.spring.test;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.zhong.com.spring.factory.UserFactory;
import cn.zhong.com.spring.user.User;


public class Test1 {
	@Test
	public void fun1(){
			//1 创建容器对象
		ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
			//2 向容器"要"user对象
		User u = (User) ac.getBean("user");
			//3 打印user对象
		System.out.println(u);
		// 关闭容器
		ac.close();
		}
}

测试结果:

 2,构造器注入:(不经常用,使用时需要注意)

(1)类里面必须含有一个构造器:


	//构造器
	public User(String username, Car car) {
		super();
		this.username = username;
		this.car = car;
	}

(2)编写对应的配置文件

<!-- 构造方法注入 ,类方法中必须含有一个构造器-->
<!-- constructor-arg name 为类的属性值,index为构造器中名为name属性的位置下标 value表示赋的值-->
<bean name = "user" class="cn.zhong.com.spring.user.User">
     <constructor-arg name="username" index="0" value="tom"></constructor-arg>
     <constructor-arg name="car" index="1" ref="car"></constructor-arg>
</bean> 

(3)测试结果:

3,p空间注入:(spring新推出的方法,但是之前的set方法比较适应人心,因此没得到推广,一般的不使用此方法)

    (1)p名称空间导入约束;

 (2)配置和set方法类似,但是比set方法简单(set方法结构严谨),大家也可以尝试一下。

<!-- p名称空间注入,和set注入格式差不多,简单明了 -->
<!-- <bean name="user" class="cn.zhong.com.spring.user.User" 
    p:username="jeck" p:car-ref="car"
></bean>
 -->

4,spel表达式注入:这个和EL表达式相似,它引用我们之前创建的类的各个属性名称:

    <!-- spel表达式和EL表达式很类似,引用之前我们创建的类的各个属性名称 -->
      <bean name="user" class="cn.zhong.com.spring.user.User">
      <!--引用之前我创建car的name名称,赋值给User.name -->
      <property name="username" value="{car.name}"></property>
      <property name="age" value="18"></property>
      <!-- 引用类型 和上面的一样, -->
      <property name="car" ref="car"></property>
      </bean> 

注意:引用类型:car(这个是我创建的一个car类)这user里面引用,引用时必须使用:ref

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值