Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • KnowledgePlanet
  • docdoc
  • Issue
  • #35

doc
doc
  • 项目概览

KnowledgePlanet / doc

通知 1303
Star 822
Fork 117
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 42
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 0
  • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • Wiki 2
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
doc
doc
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 42
    • Issue 42
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 0
    • 合并请求 0
  • Pages
  • DevOps
    • DevOps
    • 流水线
    • 流水线任务
    • 计划
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 2
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 流水线任务
  • 提交
  • Issue看板
已关闭
开放中
Opened 3月 03, 2024 by 小傅哥@Yao__Shun__Yu⛹Owner

Spring注入方式

在Spring框架中,依赖注入(Dependency Injection,DI)是一种允许对象通过外部方式获得其依赖项的技术。Spring支持以下几种类型的依赖注入方法:

  1. 构造器注入(Constructor-based injection): 使用类的构造器来注入依赖项。当你创建一个对象时,你可以通过构造器参数传递依赖项。这种方式在依赖项不可变且必须不为null时非常有用。

    public class ExampleBean {
        private final AnotherBean beanOne;
        private final YetAnotherBean beanTwo;
    
        public ExampleBean(AnotherBean beanOne, YetAnotherBean beanTwo) {
            this.beanOne = beanOne;
            this.beanTwo = beanTwo;
        }
    }
  2. 设值器注入(Setter-based injection): 通过类的setter方法注入依赖项。这种方式允许你在对象创建后的任何时间设置依赖项,使得依赖项可以是可选的或者可以修改的。

    public class ExampleBean {
        private AnotherBean beanOne;
        private YetAnotherBean beanTwo;
    
        public void setBeanOne(AnotherBean beanOne) {
            this.beanOne = beanOne;
        }
    
        public void setBeanTwo(YetAnotherBean beanTwo) {
            this.beanTwo = beanTwo;
        }
    }
  3. 字段注入(Field-based injection): 直接在类的字段上注入依赖项。这种方式不推荐使用,因为它违反了封装原则,使得你的类与Spring框架耦合,并且不能在不使用Spring的情况下进行单元测试。

    public class ExampleBean {
        @Autowired
        private AnotherBean beanOne;
    
        @Autowired
        private YetAnotherBean beanTwo;
    }
  4. 方法注入(Method-based injection): 通过类的方法注入依赖项。这不仅限于setter方法,也可以是任何自定义的方法。

    public class ExampleBean {
        private AnotherBean beanOne;
    
        @Autowired
        public void prepare(AnotherBean beanOne) {
            this.beanOne = beanOne;
        }
    }
  5. 注解注入: 使用注解(如@Autowired, @Resource, @Inject)在构造器、设值器、字段或方法上标注,以便Spring自动注入依赖项。这是一种更现代和简洁的依赖注入方式。

  6. Java配置注入: 使用Java配置类(带有@Configuration注解的类)和@Bean注解的方法来定义和注入依赖项。这种方式允许你以编程的方式定义依赖项,而不是使用XML配置。

    @Configuration
    public class AppConfig {
        @Bean
        public ExampleBean exampleBean(AnotherBean beanOne, YetAnotherBean beanTwo) {
            return new ExampleBean(beanOne, beanTwo);
        }
    }
  7. XML配置注入: 在Spring的早期版本中,XML配置文件被广泛用于定义和注入依赖项。虽然现在注解和Java配置更受欢迎,但XML配置仍然是一个有效的选项。

    <bean id="exampleBean" class="com.example.ExampleBean">
        <constructor-arg ref="anotherBean"/>
        <property name="beanTwo" ref="yetAnotherBean"/>
    </bean>

这些注入方法可以根据具体的应用场景和开发者的偏好来选择。构造器注入和设值器注入是最常用的注入方式,而注解注入和Java配置提供了更多的灵活性和简洁性。字段注入虽然简单,但通常不推荐使用。XML配置注入在现代Spring应用中已经较少使用,但对于一些遗留系统仍然很重

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: KnowledgePlanet/doc#35
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7