spring依赖注入的两种方式(实例)

spring依赖注入的两种方式

1.Spring中的对象都是由Spring进行统一管理,但是在对象中还存在属性,这些属性实际上引用的也是别的对象,那么这些对象也是由Spring来管理的;
2.在实际使用时,我们需要给Spring中对象的属性字段赋值,这称为依赖注入DI(Dependency Injection);
3.依赖注入又分为xml注入和注解注入。
把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。

1.xml注入

xml注入,也叫setter注入或者属性注入

  1. 需要在xml文件中配置bean。
  2. 为字段需要提供setter方法
    举个栗子:
//先创建一个类:MyBean
public class MyBean {
	
	public MyBean() {
		System.out.println("无参构造");
	}
	private String name;
	private YouBean youBean;

	public void setName(String name) {
		this.name = name;
		System.out.println("我是setName方法");
	}
	
	public String getName() {
		return name;
	}

	public void setYouBean(YouBean youBean) {
		this.youBean = youBean;
		System.out.println("我是setYouBean");
	}
	
	/**测试*/
	@Test
	public void testBean() throws Exception {
		//获到核心配置文件  applicationContext.xml
		ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
		MyBean mybean = ac.getBean("myBean",MyBean.class);
		YouBean youBean = ac.getBean("youBean",YouBean.class);
		System.out.println("youBean======:" + mybean);
		System.out.println("youBean======:" + youBean);
		System.out.println("name=========:" + mybean.getName());
	}
}
//YouBean类
public class YouBean {
}

在spring的配置文件中配置bean

<bean id="myBean" class="cn.itsource._02di.MyBean">
	<property name="youBean" ref="youBean"/>
	<property name="name" value="臭弟弟"/>
</bean>

<bean id="youBean" class="cn.itsource._02di.YouBean"></bean> 

运行测试方法可以得到:
在这里插入图片描述

2.注解注入

通过注解实现注入,这种方式可以将注解写在setter方法上,也可以写在字段上,如果写在字段上可以不需要setter方法。

  1. 需要在xml文件中配置bean。

  2. 字段上使用注解@Autowired或者@Resource

举个栗子

//接口IBean 
public interface IBean {
	void play();
}
//接口的实现类Bean1 
public class Bean1 implements IBean {
	@Override
	public void play(){
		System.out.println("bean111111");
	}
}
//接口的实现类Bean2 
public class Bean2 implements IBean{

	@Override
	public void play() {
		System.out.println("bean22222");
	}
}

//测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class SpringTest {
	@Autowired
	private Bean1 bean1;
	@Autowired
	private Bean2 bean2;
	@Test
	public void testName() throws Exception {
		bean1.play();
		bean2.play();
	}
}

	<!--在spring的配置文件中配置-->
	<bean id="bean1" class="cn.itsource._03test2.Bean1">
	</bean>
	
	<bean id="bean2" class="cn.itsource._03test2.Bean2">
	</bean>

运行测试方法:
在这里插入图片描述
注意事项:在实例化Bean和注入Bean对象的同时,不要将xml方式和注解方式进行混用,要么都用xml方式,要么都用注解方式

猜你喜欢

转载自blog.csdn.net/weixin_43678301/article/details/108148063