IOC使用Spring实现附实例详解

这篇具有很好参考价值的文章主要介绍了IOC使用Spring实现附实例详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、相关导读

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系列专栏文章

Maven系列专栏 Maven工程开发
Maven聚合开发【实例详解---5555字】

2. Mybatis系列专栏文章

Mybatis系列专栏 MyBatis入门配置
Mybatis入门案例【超详细】
MyBatis配置文件 —— 相关标签详解
Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填
Mybatis动态SQL查询 --(附实战案例--8888个字--88质量分)
Mybatis分页查询——四种传参方式
Mybatis一级缓存和二级缓存(带测试方法)
Mybatis分解式查询
Mybatis关联查询【附实战案例】
MyBatis注解开发---实现增删查改和动态SQL
MyBatis注解开发---实现自定义映射关系和关联查询

3. Spring系列专栏文章

Spring系列专栏 Spring IOC 入门简介【自定义容器实例】
IOC使用Spring实现附实例详解
Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式
Spring DI简介及依赖注入方式和依赖注入类型
Spring IOC相关注解运用——上篇
Spring IOC相关注解运用——下篇
Spring AOP简介及相关案例
注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】
Spring事务简介及相关案例
Spring 事务管理方案和事务管理器及事务控制的API
Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务

二、前言

Spring简介

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

Spring官方网站:

IOC使用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

IOC使用Spring实现附实例详解​ 

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

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

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.13</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

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配置文件

<?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"
            default-autowire="constructor">
    <bean id="studentDao" class="com.example.dao.StudentDaoImpl1"/>
</beans>

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. 测试结果

IOC使用Spring实现附实例详解

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

四、Spring容器类型

IOC使用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. 测试结果

IOC使用Spring实现附实例详解

        OK,本次使用Spring实现IOC就到这里了,上述讲到的三个实现类会在接下来中多次使用,希望对大家有所帮助 文章来源地址https://www.toymoban.com/news/detail-423615.html

到了这里,关于IOC使用Spring实现附实例详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring IOC相关注解运用——上篇

    目录 前言 一、@Component 二、@Repository、@Service、@Controller 三、@Scope 四、@Autowired 五、@Qualifier 六、@Value 1. 直接设置固定的属性值 2. 获取配置文件中的属性值 3. 测试结果 往期专栏文章相关导读  1. Maven系列专栏文章 2. Mybatis系列专栏文章 3. Spring系列专栏文章         注解配

    2024年02月02日
    浏览(33)
  • Spring IOC相关知识点

    :核心思想IOCAOP、作用(解耦,简化),简单描述框架组成 Spring框架是一款轻量级的开发框架,核心思想是IOC(控制反转)和AOP(面向切面编程),尾java应用程序开发提供组建管理服,用于组件之间的解耦,以及简化第三方javaEE中间件技术的应用(JMS,任务调度,缓

    2024年02月13日
    浏览(26)
  • Spring IOC相关注解运用——下篇

    目录 一、@Configuration 二、@ComponentScan 1. 说明 2. 测试方法 3. 运行结果 三、@PropertySource 1. 说明 2. 测试方法 3. 测试结果 四、@Bean 1. 说明 2. 添加驱动依赖 3. 将Connection对象放入Spring容器 3. 测试 五、@Import 1. 说明 2. 测试方法 3. 运行结果 往期专栏文章相关导读  1. Maven系列专栏文

    2024年02月05日
    浏览(30)
  • 【Spring专题】Spring之Bean的生命周期源码解析——阶段二(IOC之实例化)

    由于Spring源码分析是一个前后联系比较强的过程,而且这边分析,也是按照代码顺序讲解的,所以不了解前置知识的情况下,大概率没办法看懂当前的内容。所以,特别推荐看看我前面的文章(自上而下次序): Spring底层核心原理解析——引导篇【学习难度: ★★☆☆☆ 】

    2024年02月13日
    浏览(43)
  • 使用 spring 的 IoC 的实现账户的CRUD(2)双层实现+注解开发

    在http://t.csdn.cn/yucl4的基础上进行注解开发 【分析】 xml文件其中spring容器中的bean, 因此通过注解把这些放到容器中即可 @component:相当xml中的bean的id: 如果不指定 value 属性,默认 bean 的 id 是当前类的类名, 首字母小写。 @Controller @Service @Repository是三个衍生 @Autowired 自动按照类型

    2024年02月03日
    浏览(32)
  • spring框架,以及和spring框架相关的Java面试题和spring ioc的注入方式

    目录 一.spring来源,以及介绍 1.spring诞生的背景 2.spring框架 介绍 3.spring框架在使用中的优点以及不足 3.1优点  3.2不足 3.3总结 4.为什么要使用spring  二.将spring框架部署在IDEA中  1.替换pom.xml  2.构建spring所需要的xml文件 三.spring的三种注入方式 0.定义需要的类,方法 1.方法注入

    2024年02月12日
    浏览(37)
  • spring IOC详解

    一、IOC IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。 下面我们以几个例子来说明什么是IoC。假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy。那么,我们

    2024年02月12日
    浏览(27)
  • Spring IoC 详解

    IoC(Inversion of Control:控制反转) 是一种设计思想,而不是一个具体的技术实现。IoC 的思想就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。不过, IoC 并非 Spring 特有,在其他语言中也有应用。 为什么叫控制反转? 控制:指的是对象创建(实例化、管理)

    2024年02月13日
    浏览(26)
  • spring 详解五 IOC(注解开发)

    注解开发已经成为开发的主流选择,例如springboot都是基于注解开发使用的spring,所以学习注解开发是很有必要的,基本Bean注解, 主要是使用注解的方式替代原有xml的bean 标签及其标签属性的配置 XML 配置 注解 描述 bean id=“” class=“” @Component 被该注解标识的类,会在指定扫

    2024年02月13日
    浏览(27)
  • 3、Spring 之IOC 容器 详解

    IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种 设计思想 ,是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。 Spring 通过 IoC 容器 来管理 所有 Java 对象的实例化和初始化 , 控制对象与对象之间的依赖关系 。我

    2024年02月09日
    浏览(28)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包