博客
关于我
Spring 和 DI 依赖注入
阅读量:639 次
发布时间:2019-03-15

本文共 2630 字,大约阅读时间需要 8 分钟。

Spring 是一个轻量级的控制反转(IoC)和面向切面的(AOP)容器框架,它为开发者提供了极高效的对象管理和依赖注入机制,特别适用于构建功能强大的企业级应用。接下来我会详细解释Spring的核心概念及其配置方法。

###IOC(控制反转)IoC 是Spring 最核心的原则,它的基本思想是将对象的创建、销毁以及生命周期管理的责任从开发者转移到Spring容器。通过IoC,Spring 会自动管理对象的生命周期,开发者无需手动创建对象,减少了代码冗余和遗漏带来的潜在问题。

Spring容器默认情况下会对所有定义的bean进行管理,但也可以通过配置指定特定的作用域,如singleton(单例)、prototype(原型)等。单例模式的优势在于只保留一个对象实例,这通常适用于不需要多个实例的情况,而原型模式每次请求都会返回一个新的对象,这在需要状态独立的场景中非常有用。

###DI(依赖注入)依赖注入是IoC的重要实现方式,它通过将依赖关系注入到对象中,确保对象能够获取到需要的功能或资源。Spring支持三种主要的依赖注入方式:

  • set方法注入:通过调用对象的set方法,将属性值注入到字段中。
    1. 引用注入(@ref):如果需要注入另一个bean的实例,可以通过ref属性指定目标bean的id。
      1. 构造方法注入:对于需要复杂初始化逻辑的对象,可以通过调用构造方法注入依赖。
      2. 通过以上方法,开发者可以灵活地管理对象的创建与依赖关系,实现更松耦合的设计。

        ###Spring配置Spring 提供了丰富的配置方式,其中最常见的有XML、Java Annotation以及Jwt和属性文件配置。以下主要介绍XML配置方式。

        ####XML配置在XML配置中,bean标签用于定义需要管理的对象(bean)。关键属性包括:

        • class:指定bean的具体类。
        • name:为bean起一个唯一的标识符。
        • scope:定义bean的作用域,默认为singleton。
        • init-method:初始化方法的调用点。
        • destroy-method:销毁方法的调用点。
        • lazy-init:启用懒加载策略(默认情况下,所有bean都会立即创建,关闭懒加载可以节省内存)。

        所有bean的内容必须放在 <beans> 标签内。下面是一个典型的XML配置示例:

        ####属性注入在Spring中,属性注入是将配置文件中的值动态注入到对象中。常用的方式包括:

        • 通过属性文件读取:可以使用 <context:property>标签将属性值注入到变量中。
        • 通过自定义属性文件:导入一个属性文件(如application.properties),然后通过@Value注解将属性注入到方法参数或字段中。

        注:@Value注解可以使用多种表达式,如直接赋值、引用配置文件中的值或使用SpEL(Spring Expression Language)表达式。

        ###注解开发随着Spring注解的普及,使用注解代替XML配置已经成为主流。常用的注解包括:

        • @SpringBootApplication:标记可扫描的主类,通常用于Spring Boot应用。
        • @RestController:标记控制器类,简化RESTful服务开发。
        • @Service, @Component, @Repository:标记服务层、组件和数据访问层。
        • @Autowired:实现依赖注入,可选择性地标注在字段或方法上。
        • @Value:用于注入属性值或表达式。
        • @Scope:定义bean的作用域,灵活地控制对象的创建方式。

        以下是一个简单的注解示例:

        @Servicepublic class UserService {    @Autowired    private UserDAO userDAO;    @Autowired    private UserRepository userRepository;    @RequestMapping(method = RequestMethod.GET)    public User findByUsername(@Value("1") String username) {        //业务逻辑    }}

        ###Junit和Spring测试为了确保Spring应用的正确性,开发者通常会进行单元测试。Spring提供了专门的测试框架,可以通过注解快速集成测试环境。常用的注解包括:

        • @RunWith(SpringJUnit4ClassRunner.class):启动Spring上下文,管理测试用例。
        • @ContextConfiguration Dor beet死:指定加载配置文件路径。
        • @MockBean & @RealBean:用于模拟和实例化依赖对象。

        一个典型的测试方法示例:

        @RunWith(SpringJUnit4ClassRunner.class)@TestClass(value = ConfigurableRequirement.class)public class UserControllerTest {    @Autowired    private UserController userController;    @ beforeEach    public void setup() {        userController.init();    }    @Test    public void testGetUserList() {       //测试逻辑    }}

        ###总结通过以上内容,可以看出Spring框架提供了一套强大且灵活的配置和管理方式。无论是使用XML配置还是注解开发,项目都可以更加高效地管理对象的创建和依赖关系。结合IoC和依赖注入的特性,Spring让开发者专注于业务逻辑的实现,而不用过多关注对象的生命周期管理。通过合理配置和注解的使用,可以提升代码的可读性和维护性,为项目开发提供坚实的基础。

    转载地址:http://mxglz.baihongyu.com/

    你可能感兴趣的文章
    超市账单管理系统
    查看>>
    Springboot实现热部署
    查看>>
    composer 介绍、安装及基本使用方法
    查看>>
    PHP 的 ::class 用法
    查看>>
    Python学习之列表用法
    查看>>
    升级qiime2
    查看>>
    Docker 阿里云CentOS 安装
    查看>>
    Bootstrap提交表单基本组件
    查看>>
    需求分析
    查看>>
    查找单链表中倒数第k个节点
    查看>>
    linux中rm和rmdir的区别
    查看>>
    JUC源码分析-序章
    查看>>
    面试高频 C++ 知识总结
    查看>>
    小易的升级之路,找出字符串中第一个只出现一次的字符
    查看>>
    创建组出现错误:对COM组件的调用返回了错误 HRESULT E_FAIL。小敏
    查看>>
    数组去重的常用的几种方法
    查看>>
    Linux yum提示Loaded plugins错误的解决方法
    查看>>
    MySQL常见问题解决方案
    查看>>
    npm切换镜像
    查看>>
    算法——203、移除链表元素(力扣)
    查看>>