前言
在上一篇文章中,我们学习了IoC与DI的相关概念与原理,现在让我们 以HelloWorld为例,编写一个程序,让创建对象的工作由Spring帮助我们创建。 一同感受一下Spring框架带给我们开发的便捷性。
一、编写Java类
public class HelloWorld {
private String name;
public void setName(String name) {
this.name = name;
}
public void sayHi(){
System.out.println(name + ",HelloWorld!");
}
}
二、传统方式测试
@Test
public void testSayHi() throws Exception{
HelloWorld helloWorld = new HelloWorld();
helloWorld.setName("段康家");
helloWorld.sayHi();
}
这种做法是以前最常用的做法,HelloWorld这个类的对象是我们程序员自己去创建并为属性赋值,但是要使用Spring,该如何实现同样的功能呢?看4.3以后的章节。
三、导入Spring依赖的包
<dependencies>
<!-- 导入Spring的jar包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<!-- 单元测试框架 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
四、编写Spring主配置文件
说明:主配置文件的名称一般叫beans.xml或在applicationContext.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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 把HelloWorld对象的创建工作交给Spring-->
<bean id="helloWorld" class="cn.bdqn.HelloWorld">
<property name="name" value="彭依凝"/>
</bean>
</beans>
五、测试Spring
@Test
public void testSayHi() throws Exception{
// 1、读取主配置文件信息,获取核心容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
// 2、从容器中根据id获取对象(bean)
HelloWorld helloWorld = (HelloWorld) ac.getBean("helloWorld");
// 3、调用bean的方法
helloWorld.sayHi();
}
六、案例细节
6.1、ApplicationContext的三个常用实现类
6.2、BeanFactory和ApplicationContext的区别
6.2.1、BeanFactory
是Spring里面最底层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能。
BeanFactory在启动的时候不会去实例化Bean,只有从容器中拿Bean的时候才会去实例化。延迟加载
public class UserServiceImpl {
public UserServiceImpl(){
System.out.println("对象的构造方法执行了");
}
}
<bean id="userService" class="cn.bdqn.UserServiceImpl"/>
@Test
public void testUserServiceImpl() throws Exception{
// 加载配置文件创建容器并不会导致bean的立即初始化
Resource resource = new ClassPathResource("beans.xml");
BeanFactory bf = new XmlBeanFactory(resource);
// 只有再去真正要使用的某个bean的时候才会初始化
UserServiceImpl userService = (UserServiceImpl) bf.getBean("userService");
System.out.println(userService);
}
6.2.2、ApplicationContext
应用上下文,该接口其实是BeanFactory的子接口,提供了更多的有用的功能:
ApplicationContext在启动的时候就把所有的Bean全部实例化了。
原文地址:https://blog.csdn.net/m0_63947499/article/details/134256380
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_26065.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。