Spring的简介ioc容器及注入方式1

简介: Spring的简介ioc容器及注入方式1

一.Spring的简介

1.Spring的特性

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。

Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。

然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

目的:解决企业应用开发的复杂性

功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

范围:任何Java应用

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

2.Spring模块

在Java开发中,通常将Spring框架分为以下七个主要模块:

1.Spring核心容器(Spring Core Container):这是Spring框架的核心部分,提供了IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)的功能,用于管理和组织应用程序的组件和对象。

2.Spring应用上下文(Spring Application Context):该模块建立在核心容器之上,提供了一种高级方式来访问配置文件和管理Bean的生命周期,同时支持国际化、事件传播等特性。

3.Spring AOP(Spring Aspect-Oriented Programming):该模块实现了面向切面编程(AOP),用于将横切关注点(例如日志、事务、安全)与应用程序的业务逻辑分离开来,并以声明式的方式将它们作为可重用的模块应用到系统中。

4.Spring JDBC(Spring Java Database Connectivity):该模块封装了JDBC(Java数据库连接)代码,提供了简化数据库访问的方式,并且支持声明式的事务管理。

5.Spring事务管理(Spring Transaction Management):该模块为应用提供了一种管理事务的手段,支持编程式事务管理和声明式事务管理,并且可以与各种事务管理技术(如JTA、JDBC等)进行集成。

6.Spring Web MVC(Spring Model-View-Controller):该模块是Spring框架的Web应用程序开发部分,提供了一种MVC(Model-View-Controller)的模式来组织和管理Web应用程序的代码,支持请求处理、视图解析、数据绑定等功能。

7.Spring测试(Spring Testing):该模块提供了用于测试Spring应用程序的功能和工具,包括单元测试、集成测试、模拟对象等。

这些模块一起构成了Spring框架的基础,并且可以根据具体需求进行灵活的组合和使用。

3.spring的常用注解

在Spring框架中,有许多常用的注解,以下是其中一些常见的注解:

1. @Component:将一个类标记为Spring的组件,并将其纳入到Spring容器中进行管理。这是一个通用的注解,可以用于任何类。

2. @Controller:标记一个类为Spring MVC的控制器,用于处理Web请求和响应。

3. @Service:标记一个类为服务层组件,通常用于封装业务逻辑,被注入到其他层进行调用。

4. @Repository:标记一个类为数据访问层组件,通常用于操作数据库或其他持久化操作。

5. @Autowired:用于自动装配Spring容器中的Bean,可以在类的属性、构造方法或者方法上使用。

6. @Value:用于从属性文件或者环境变量中读取配置值,并注入到类的属性中。

7. @RequestMapping:用于映射HTTP请求的URL路径到控制器的处理方法,并指定请求的HTTP方法。

8. @ResponseBody:将控制器方法的返回值直接作为HTTP响应的内容,而不是跳转到视图。

9. @PathVariable:用于获取URL路径中的参数值,并将其注入到控制器方法的参数中。

10. @RequestParam:用于获取请求中的参数值,并将其注入到控制器方法的参数中。

11. @SessionAttribute:用于将模型中的属性存储到HTTP会话中,以便在多个请求之间共享。

12. @Transactional:用于标记一个方法或者类需要进行事务管理。

这些注解只是Spring框架中的一部分,还有很多其他功能强大的注解可供使用。根据具体情况和需求,你可以使用适合的注解来简化开发、提高效率。

二.ioc容器的特点

1.ioc的介绍

IOC(Inversion of Control,控制反转)是一种软件设计的原则,用于实现松耦合和可维护性的应用程序。在IOC容器中,控制权从应用程序代码转移到容器中,由容器负责实例化、管理和协调应用程序中的对象。

以下是IOC容器的一些特点:

控制反转:IOC容器通过控制反转的方式,将对象的控制权从应用程序代码转移到容器中。应用程序不需要手动创建对象,而是由容器创建和管理对象的生命周期。

依赖注入:IOC容器通过依赖注入的方式,自动解决对象之间的依赖关系。应用程序只需要声明依赖关系,容器会负责自动注入所需的依赖。

松耦合:IOC容器通过解耦对象之间的依赖关系,实现了松耦合。对象只需要关注自身的功能,而不需要关心如何获取依赖的对象。这样可以提高代码的可维护性和可测试性。

配置集中管理:IOC容器通常将对象的配置信息集中存储在配置文件或注解中,而不是分散在应用程序的各个地方。这样可以提高配置的可维护性和可重用性。

生命周期管理:IOC容器负责管理对象的生命周期,例如对象的创建、初始化、销毁等。容器可以根据配置和需要来管理对象的生命周期,确保对象的正确创建和销毁过程。

AOP支持:很多IOC容器提供对面向切面编程(AOP)的支持。通过AOP,可以将与核心业务逻辑无关的横切关注点(如日志、事务、安全等)从应用程序中剥离出来,实现代码的模块化和复用。

总之,IOC容器通过控制反转和依赖注入等机制,实现了对象的解耦和集中管理,提高了代码的可维护性和可测试性,同时也为AOP等功能提供了支持。许多流行的框架和技术,如Spring框架,就是基于IOC容器来构建和管理应用程序的。

2.代码演示

当使用IOC容器时,我们可以通过配置文件或注解来定义对象之间的依赖关系

1.先定义一个接口

package com.YU.ioc.service;
/**
 * @author YU
 * @create 2023-08-14 18:15
 *
 * 更改用户信息的接口
 */
public interface UserService {
    public void update();
}

2.然后创建两个实现类实现上面的接口

package com.YU.ioc.service.impl;
import com.YU.ioc.service.UserService;
/**
 * @author YU
 * @create 2023-08-14 18:17
 */
public class UserServiceImpl1 implements UserService {
    public void update() {
        System.out.println("更改用户个人信息");
    }
}
public class UserServiceImpl2 implements UserService {
    public void update() {
        System.out.println("用户注销");
    }
}

3.现在,我们可以使用Spring的IOC容器来管理对象的生命周期和依赖注入。首先,我们需要创建一个配置文件(如spring-context.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">
<!-- 凡是spring配置文件spring-context.xml中配置,那么该类JavaBean就交给了spring容器管理-->
    <bean class="com.YU.ioc.web.UserAction" id = "userAction">
        <property name="userService" ref="userService"></property>
    </bean>
    <bean class="com.YU.ioc.web.BookAction" id = "bookAction">
        <property name="userService" ref="userServiceImpl1"></property>
    </bean>
    <bean class="com.YU.ioc.service.impl.UserServiceImpl2" id = "userService"></bean>
    <bean class="com.YU.ioc.service.impl.UserServiceImpl1" id = "userServiceImpl1"></bean>
</beans>

4.最后,我们就可以通过Spring的ioc容器获取Service接口了

目录
相关文章
|
25天前
|
XML Java 数据格式
【SpringFramework】Spring IoC-基于XML的实现
本文主要讲解SpringFramework中IoC和DI相关概念,及基于XML的实现方式。
108 69
|
23天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
51 21
|
29天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
28天前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
5月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
7月前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
57 1
|
4月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
320 18
|
7月前
|
XML druid Java
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
Spring5系列学习文章分享---第二篇(IOC的bean管理factory+Bean作用域与生命周期+自动装配+基于注解管理+外部属性管理之druid)
85 0
|
5月前
|
XML Java 数据格式
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
这篇文章详细介绍了Spring框架中IOC容器的Bean管理,特别是基于XML配置方式的实现。文章涵盖了Bean的定义、属性注入、使用set方法和构造函数注入,以及如何注入不同类型的属性,包括null值、特殊字符和外部bean。此外,还探讨了内部bean的概念及其与外部bean的比较,并提供了相应的示例代码和测试结果。
Spring5入门到实战------3、IOC容器-Bean管理XML方式(一)
|
5月前
|
XML Java 数据格式
Spring5入门到实战------5、IOC容器-Bean管理(三)
这篇文章深入探讨了Spring5框架中IOC容器的高级Bean管理,包括FactoryBean的使用、Bean作用域的设置、Bean生命周期的详细解释以及Bean后置处理器的实现和应用。
Spring5入门到实战------5、IOC容器-Bean管理(三)

热门文章

最新文章