文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

IOC使用Spring实现附实例详解

2023-09-02 21:07

关注

目录

一、相关导读

1. Maven系列专栏文章

2. Mybatis系列专栏文章

3. Spring系列专栏文章

二、前言

Spring简介

Spring体系结构

三、Spring实现IOC

1. 创建Maven工程,引入对应依赖

2. 创建实体类,Dao接口及实现类

3. 编写xml配置文件

4. 测试从Spring容器获取对象

5. 测试结果

四、Spring容器类型

1. 容器接口

2. ApplicationContext容器实现类

3. 测试从磁盘读取配置文件

4. 测试结果


一、相关导读

        大家如果对于本期内容有什么不了解的话也可以去看看往期的内容,下面列出了博主往期精心制作的Maven,Mybatis等专栏系列文章,走过路过不要错过哎!如果对您有所帮助的话就点点赞,收藏一下啪。其中Spring专栏有些正在更,所以无法查看,但是当博主全部更完之后就可以看啦。

1. Maven系列专栏文章

2. Mybatis系列专栏文章

3. Spring系列专栏文章

二、前言

Spring简介

        Spring是一个开源框架,为简化企业级开发而生。它以IOC(控制反转)和AOP(面向切面)为思想内核,提供了控制层SpringMVC、数据层SpringData、服务层事务管理等众多技术,并可以整合众多第三方框架。Spring将很多复杂的代码变得优雅简洁,有效的降低代码的耦合度,极大的方便项目的后期维护、升级和扩展。
Spring官网地址:Spring | Home

Spring官方网站:

Spring体系结构

        Spring框架根据不同的功能被划分成了多个模块,这些模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。

  1. Core Container:Spring核心模块,任何功能的使用都离不开该模块,是其他模块建立的基础。
  2. Data Access/Integration:该模块提供了数据持久化的相应功能。
  3. Web:该模块提供了web开发的相应功能。
  4. AOP:提供了面向切面编程实现
  5. Aspects:提供与AspectJ框架的集成,该框架是一个面向切面编程框架。
  6. Instrumentation:提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
  7. Messaging:为Spring框架集成一些基础的报文传送应用
  8. Test:提供与测试框架的集成

三、Spring实现IOC

​ 

接下来我们使用Spring实现IOC,Spring内部也有一个容器用来管理对象。

1. 创建Maven工程,引入对应依赖

                        org.springframework            spring-context            5.3.13                            junit            junit            4.12            test            

2. 创建实体类,Dao接口及实现类

Student实体类

package com.example.pojo;public class Student {    private int id;    private String name;    private String address;    public Student(int id, String name, String address) {        this.id = id;        this.name = name;        this.address = address;    }    public Student(){}    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    @Override    public String toString() {        return "Student[ " +                "id=" + id +                ", name='" + name + '\'' +                ", address='" + address + '\'' +                " ]";    }}

StudentDao接口

package com.example.dao;import com.example.pojo.Student;public interface StudentDao {    // 根据id查询学生    Student findById(int id);}

StudentDao接口实现类StudentDaoImpl1

package com.example.dao;import com.example.pojo.Student;public class StudentDaoImpl1 implements StudentDao{    public StudentDaoImpl1() {    }    public StudentDaoImpl1(int a){};    @Override    public Student findById(int id){        return new Student(id,"程序员","北京");    }}

3. 编写xml配置文件

    

4. 测试从Spring容器获取对象

package com.example;import com.example.dao.StudentDao;import com.example.service.StudentService;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class TestContainer {    @Test    public void t1(){        // 创建Spring容器        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");        // 从容器中获取对象        StudentDao studentDao1 = ac.getBean("studentDao",StudentDao.class);        StudentDao studentDao2 = ac.getBean("studentDao",StudentDao.class);        System.out.println(studentDao1.hashCode());        System.out.println(studentDao2.hashCode());        System.out.println(studentDao1.findById(1));    }}

5. 测试结果

OK,同样返回两个对象的哈希值都是一样的,说明了确实是从容器中获取同一个对象。 

四、Spring容器类型

1. 容器接口

  • BeanFactory:BeanFactory是Spring容器中的顶层接口,它可以对Bean对象进行管理。
  • ApplicationContext:ApplicationContext是BeanFactory的子接口。它除了继承 BeanFactory的所有功能外,还添加了对国际化、资源访问、事件传播等方面的良好支持。ApplicationContext有以下三个常用实现类:

2. ApplicationContext容器实现类

  1. ClassPathXmlApplicationContext:该类可以从项目中读取配置文件
  2. FileSystemXmlApplicationContext:该类从磁盘中读取配置文件
  3. AnnotationConfigApplicationContext:使用该类不读取配置文件,而是会读取注解

3. 测试从磁盘读取配置文件

    @Test    public void t2(){        // 创建spring容器        ApplicationContext ac = new FileSystemXmlApplicationContext("C:\\JavaProjects\\06SSM_Projects\\springdemo\\spring_ioc1\\src\\main\\resources\\bean.xml");        // 从容器中获取对象        StudentDao userDao = ac.getBean("studentDao",StudentDao.class);        System.out.println(userDao);        System.out.println(userDao.findById(1));;    }

4. 测试结果

        OK,本次使用Spring实现IOC就到这里了,上述讲到的三个实现类会在接下来中多次使用,希望对大家有所帮助 

来源地址:https://blog.csdn.net/qq_53317005/article/details/129780496

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯