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   ~码铃薯~  阅读(16)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2020-07-26 从数据库中反向生成pdm文件

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示