【Spring进阶系列丨第三篇】Spring核心技术之 IoC 与 DI 实战案例

这篇具有很好参考价值的文章主要介绍了【Spring进阶系列丨第三篇】Spring核心技术之 IoC 与 DI 实战案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在上一篇文章中,我们学习了IoC与DI的相关概念与原理,现在让我们 以HelloWorld为例,编写一个程序,让创建对象的工作由Spring帮助我们创建。 一同感受一下Spring框架带给我们开发的便捷性。

【Spring进阶系列丨第三篇】Spring核心技术之 IoC 与 DI 实战案例,Spring进阶系列,spring,数据库,java,spring cloud

一、编写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

在resources目录下新建beans.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的三个常用实现类

  • ClassPathXmlApplicationContext

    该类可以加载类路径下的配置文件,要求配置文件必须在类路径下。不在的话,加载不了。

  • FileSystemXmlApplicationContext

    它可以加载磁盘任意路径下的配置文件。

  • AnnotationConfigApplicationContext

    它是用于读取注解创建容器的

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的子接口,提供了更多的有用的功能:

  • 国际化
  • 轻松的能够与Spring的AOP集成
  • 消息发布

ApplicationContext在启动的时候就把所有的Bean全部实例化了。


【Spring进阶系列丨第三篇】Spring核心技术之 IoC 与 DI 实战案例,Spring进阶系列,spring,数据库,java,spring cloud文章来源地址https://www.toymoban.com/news/detail-752948.html

到了这里,关于【Spring进阶系列丨第三篇】Spring核心技术之 IoC 与 DI 实战案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年Java核心技术面试第三篇(篇篇万字精讲)

    目录 六.  Java反射机制以及动态代理是基于什么原理  6.1 反射机制: 6.2 反射例子: 6.3 动态代理: 6.4 例子: 6.5 总结: 6.5.1 代理模式 6.5.1.1动态代理: *6.5.1.2 JDK动态代理: *6.5.1.3 cglib动态代理: 6.5.1.4 反射与动态代理原理 6.5.2 应用场景: 6.5.2.3 组成要素: 6.5.2.4 实现方式

    2024年02月12日
    浏览(33)
  • 【Spring进阶系列丨第五篇】详解Spring中的依赖注入

    全称 Dependency Injection(DI) 与IoC的关系 IoC和DI其实说的是一个意思,可以这么说: IoC是一种思想,DI是对这种思想的一种具体实现 依赖关系的管理 以后都交给spring来维护,在当前类需要用到其他类的对象,由spring为我们提供,我们只需要在配置文件中说明。 依赖关系的维护

    2024年02月04日
    浏览(45)
  • 【Spring进阶系列丨第七篇】Spring框架新注解分类及详解

    1.1.1、定义一个类 1.1.2、使用Configuration注解修饰类 1.1.3、作用 ​ 使用Configuration注解修饰的类表示的是:当前类是一个配置类。该类的作用和beans.xml是一样的,换句话说,该 注解所修饰的类就是用来代替beans.xml文件的。 1.2.1、定义bean 1.2.2、在主配置类中注册bean ​ 在以前,

    2024年04月10日
    浏览(81)
  • 【Spring进阶系列丨第六篇】Spring的Bean管理(基于注解)

    回顾一下 基于xml配置的Spring对Bean的管理 ,对Bean的完整管理如下所示: 分析可以发现:我们对Bean的管理就四个方面,分别是: 用于创建对象的 用于注入数据的 用于改变Bean的作用域的 和Bean的生命周期相关的 其实对于注解来说,也是包括了这四个方面,换句话说, 使用注

    2024年02月03日
    浏览(40)
  • 【Spring进阶系列丨第四篇】学习Spring中的Bean管理(基于xml配置)

    在之前的学习中我们知道,容器是一个空间的概念,一般理解为可盛放物体的地方。在Spring容器通常理解为BeanFactory或者ApplicationContext。我们知道spring的IOC容器能够帮我们创建对象,对象交给spring管理之后我们就不用手动去new对象。 那么Spring是如何管理Bean的呢? 简而言之,

    2024年02月05日
    浏览(59)
  • 【Spring进阶系列丨第八篇】Spring整合junit & 面向切面编程(AOP)详解

    ​ @ContextConfiguration注解需要注意的细节是: classes:指定的是主配置类的字节码 locations:指定xml文件的位置 ​ 首先来看一个问题,假如我现在有一个UserServiceImpl用户业务类,其中呢,有一个保存用户的方法,即: ​ 现在的需求是:我要在保存用户之前新增事务的功能,你

    2024年04月13日
    浏览(41)
  • 【Spring进阶系列丨第十篇】基于注解的面向切面编程(AOP)详解

    ​ 注意,该类的两个细节: a、@Component注解向容器中注册一个Bean。 b、@Aspect注解表示这个是一个切面类。 c、@Before注解表示的是这个是前置增强/前置通知。 ​ 注意:对于业务Bean,我们也需要通过@Service注解来向容器中注册。 ​ 问题:我们看到对于切面类中定义的通知,有

    2024年04月23日
    浏览(38)
  • 【Spring进阶系列丨第九篇】基于XML的面向切面编程(AOP)详解

    1.1.1、beans.xml中添加aop的约束 1.1.2、定义Bean ​ 问题:我们上面的案例经过测试发现确实在调用业务方法之前增加了日志功能,但是问题是仅仅能针对某一个业务方法进行增强,而我们的业务方法又有可能有很多,所以显然一个一个的去配置很麻烦,如何更加灵活的去配置呢

    2024年04月18日
    浏览(41)
  • 第三篇【传奇开心果微博系列】Python微项目技术点案例示例:爱的表达

    使用pygame编写程序,在启动后每隔一段时间随机选择一条爱的信息和一条关心的信息,然后在应用程序窗口中显示出来。然后扩展示例添加更多功能让它比较完美。让它陪在你女朋友身边,时刻体会你对她的关心和爱意,温暖滋润她的心田。她会更加爱你奥! 这是一个很有创

    2024年02月20日
    浏览(36)
  • Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))

    开篇: 欢迎再次来到 Spring 5 学习系列!在这个博客中,我们将深入研究 Spring 框架的AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式)。 概念 什么是AOP (1)面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得 业务逻辑各部分之间的

    2024年01月24日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包