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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-07-26 从数据库中反向生成pdm文件