Spring入门+IoC注解详情【依赖注入、整合Junit、配置类】---多以案例讲述(一)

简介: Spring入门+IoC注解详情【依赖注入、整合Junit、配置类】---多以案例讲述

1.Spring 概述


Spring是一站式框架,也就是Spring可以整合其他框架


Spring Ioc : 对象工厂及依赖注入


2 . Ioc概述


1)什么是Ioc?


Ioc是 Inversion Control 的缩写,即"控制反转"。


控制反转:将创建对象的权力,由自己【new】,反转给Spring


我们一般创建一个类对象都会使用new 关键字,new一个对象出来。


而控制反转就是:不在new ,而是直接将实现类对象存入Ioc容器中,从容器中进行调用即可。


Ioc 容器 : 一个以键值对的形式保存实现类对象。通过键的名称,找、调用键对应的值[类]


key = 对类注解声明放入Ioc容器的name名称


value = 注解名称下的实现类对象


图集详解


a5f7e2dec28b4d1184c7ee6ced1ddb7b.png


2)Ioc创建对象基础案例


需求


使用Ioc的方式创建UserService对象,并调用查询所有方法


2.1相关注解说明

@Component("xxx") //注解标明将该类取明为xxx,作为键存入Ioc容器中 
@Configuration  //注解标明该类是一个配置类
@ComponentScan(basePackages = "扫描需要被加载的类所在的包")

2.2图集导航【以User类为例】


5e3e09eb5978402593c7e96f5b8f5ed1.png


  • UserService【接口】
public interface UserService {
    //接口类
    void selectAll();
}

UserServiceImpl【接口实现类】

编写功能接口及其实现类。使用@Component将实现类添加到spring容器。

@Component("userServiceImpl")  //存入Ioc容器中
public class UserServiceImpl implements UserService {
    //实现类
    //查询所有
    public void selectAll() {
        System.out.println("demo01-userService-selectAll");
    }
}

Demo01Configuration【配置类】

编写配置类,并扫描实现类。使用@Configuration声明配置类,使用@ComponentScan进行扫描

@Configuration  //配置类
@ComponentScan(basePackages = "com.czxy.demo01.service") //扫描需要被加载的类所在的包
public class Demo01Configguration {
}

TestDemo01 【测试类。使用ApplicationContext从spring容器中获得实现类。】

public class TestDemo01 {
    //测试类
    public static void main(String[] args) {
        //通过处理注解,获得工厂
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Demo01Configguration.class);
        //通过工厂,获得mapper
        UserService userServiceImpl = (UserService) applicationContext.getBean("userServiceImpl");
        //调用
        userServiceImpl.selectAll();
    }
}
  • 测试结果


5ce866e5b0694039bc0c9e156c7d1800.png


  • 2.3总结
  • • 配置类必须使用 @Configuration 进行声明
    • @ComponentScan 扫描路径必须是service的包名。

3. 依赖注入

3.1相关注解说明

@Ressource(name="xxx") //xxx表示对应Dao包下@Component("xxx")注解标明的类对象
@Component("xxx") //注解标明将该类取明为xxx,作为键存入Ioc容器中 
@Configuration  //注解标明该类是一个配置类
@ComponentScan(basePackages = "扫描需要被加载的类所在的包")

3.2图集导航【已User类为例】


bcdcc6f92ee1405aa14682e40456b706.png


UserDao【数据访问层】

编写UserDao,并使用@Component

@Component("userDao2")
public class Userdao {
    public void selectAll(){
        System.out.println("dao : selectAll");
    }
}

UserService 【实现类】

编写UserService,并使用@Component

@Component("userService2")
public class UserServiceImpl implements UserService {
    @Override
    public void selectAll() {
        //调用dao
        userdao.selectAll();
        System.out.println("service:selectAll");
    }
}

UserService 【实现类完善】【业务逻辑层】

  • 修改UserService,提供UserDao成员变量,并使用@Resource完成注入
@Component("userService2")
public class UserServiceImpl implements UserService {
    //将userDao1注入给UserDao
    //依赖注入
    @Resource(name = "userDao2") 
    private Userdao userdao ;
    @Override
    public void selectAll() {
        //调用dao
        userdao.selectAll();
        System.out.println("service:selectAll");
    }
}

Demo02Configuration【配置类】

@Configuration  //标注配置类
@ComponentScan(basePackages{"com.czxy.demo02.dao","com.czxy.demo02.service"}) //标注需要被加载的类所在的包进行扫描
public class Demo02Configuration {
}

TestDemo02 【测试类】【表示层】

public class TestDemo02 {
    public static void main(String[] args) {
        //通过处理注解,获得工厂
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(Demo02Configuration.class);
        // //通过工厂,获得mapper
        UserServiceImpl userService2 = applicationContext.getBean("userService2", UserServiceImpl.class);
         //调用
        userService2.selectAll();
    }
}

测试结果


81dfdd35dc0048d7ac70e5d1e73a9884.png


3.3 图集总结


899621e36d704e1d920af83b99c03f31.png



相关文章
|
6月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
966 26
|
Java 测试技术 Spring
【SpringFramework】Spring整合JUnit
本文简述Spring整合JUnit单元测试组件的通用方法,可以简化Spring框架测试。
335 14
|
人工智能 Cloud Native 安全
DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集
诚挚地感谢每一位持续关注并使用 Higress 和 Spring AI Alibaba 的朋友,DeepSeek + Higress AI 网关/Spring AI Alibaba 案例征集中。
1016 116
|
10月前
|
XML 人工智能 Java
Spring IOC 到底是什么?
IOC(控制反转)是一种设计思想,主要用于解耦代码,简化依赖管理。其核心是将对象的创建和管理交给容器处理,而非由程序直接硬编码实现。通过IOC,开发者无需手动new对象,而是由框架负责实例化、装配和管理依赖对象。常见应用如Spring框架中的BeanFactory和ApplicationContext,它们实现了依赖注入和动态管理功能,提升了代码的灵活性与可维护性。
253 1
|
11月前
|
XML Java 数据格式
Spring IoC容器的设计与实现
Spring 是一个功能强大且模块化的 Java 开发框架,其核心架构围绕 IoC 容器、AOP、数据访问与集成、Web 层支持等展开。其中,`BeanFactory` 和 `ApplicationContext` 是 Spring 容器的核心组件,分别定位为基础容器和高级容器,前者提供轻量级的 Bean 管理,后者扩展了事件发布、国际化等功能。
306 18
|
XML Java 数据格式
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
京东一面:spring ioc容器本质是什么? ioc容器启动的步骤有哪些?
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
316 69
|
Java 容器 Spring
什么是Spring IOC 和DI ?
IOC : 控制翻转 , 它把传统上由程序代码直接操控的对象的调用权交给容 器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转 移,从程序代码本身转移到了外部容器。 DI : 依赖注入,在我们创建对象的过程中,把对象依赖的属性注入到我们的类中。
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
255 21

热门文章

最新文章