spring加载bean的三种方式

spring加载bean的三种方式:

使用xml的方式:

编写配置文件 spring-practies.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   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="testBean" class="com.coding.spring.practies.TestBean"/>
</beans>

编写测试类:

package com.coding.spring.practies;

public class TestBean {
}

编写测试类:

package com.coding.spring.bean;

import com.coding.spring.practies.TestBean;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

/*
	Spring 加载bean的三种方式
 */
public class ObtainBeanTest {

	@Test
	public void obtainBeanByXmlBeanFactory(){
		BeanFactory bf = new XmlBeanFactory(new ClassPathResource("spring-practies.xml"));
		TestBean bean = (TestBean) bf.getBean("testBean");
		System.out.println(bean);
	}
    // output:com.coding.spring.practies.TestBean@4351c8c3

	@Test
	public void obtainBeanByClassPathXmlApplicationContext(){
		ApplicationContext context = new ClassPathXmlApplicationContext("spring-practies.xml");
		TestBean bean = context.getBean("myBean", TestBean.class);
		System.out.println(bean);
	}
    // output:com.coding.spring.practies.TestBean@792bbc74
}

使用xml+注解的方式

创建两个类:

package com.coding.spring.practies;

import org.springframework.stereotype.Component;
/**
 注意:使用xml+注解的方式一定要加上@Component之类的注解,要不你一个包下面有很多个类,spring不知道将哪些类扫描并加载到spring容器中。
/
@Component
public class TestBeanHAHA {
}
package com.coding.spring.practies;

import org.springframework.stereotype.Component;

@Component
public class TestBeanHBHB {
}

创建配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

	<context:component-scan base-package="com.coding.spring.practies" />
</beans>

编写测试类:

	@Test
	public void obtainBeanByXmlAndAnnotation(){
		ApplicationContext context = new ClassPathXmlApplicationContext("spring-practies.xml");
		TestBeanHAHA testBeanHAHA = context.getBean(TestBeanHAHA.class);
		System.out.println(testBeanHAHA);
		TestBeanHBHB testBeanHBHB = context.getBean(TestBeanHBHB.class);
		System.out.println(testBeanHBHB);
	}
// output:com.coding.spring.practies.TestBeanHAHA@5778826f
// 		com.coding.spring.practies.TestBeanHBHB@5b64c4b7

纯注解

创建两个类:

package com.coding.spring.practies;

import org.springframework.stereotype.Component;

/**
	一定要加@Component之类的注解
*/
@Component
public class AutoBeanHAHA {
}
package com.coding.spring.practies;

import org.springframework.stereotype.Component;

@Component
public class AutoBeanHBHB {
}

编写测试类:

	@Test
	public void obtainBeanByPureAnnotation(){
        // 就不用在xml配置文件中进行配置了
		ApplicationContext context = new AnnotationConfigApplicationContext("com.coding.spring.practies");
		AutoBeanHAHA autoBeanHAHA = context.getBean(AutoBeanHAHA.class);
		System.out.println(autoBeanHAHA);
		AutoBeanHBHB autoBeanHBHB = context.getBean(AutoBeanHBHB.class);
		System.out.println(autoBeanHBHB);
	}
// output:
com.coding.spring.practies.AutoBeanHAHA@54d18072
com.coding.spring.practies.AutoBeanHBHB@1506f20f

posted on 2024-07-26 10:19  ~码铃薯~  阅读(2)  评论(0编辑  收藏  举报

导航