博客
关于我
2.Spring的基于注解的IOC(暂补充)
阅读量:646 次
发布时间:2019-03-15

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

IOC环境搭建及常用注解解析

在开始优化项目的注解配置之前,了解IOC的基本原理并搭建好环境是必不可少的。以下将从基础理论入手,结合Spring的常用注解进行详细解读。


注解类型概述

IOC(Inversion of Control,控制反转)是一种设计模式,通过注解技术让依赖关系由框架管理,而不是通过手动设置引用。### 解析4类注解

  • 用于创建对象的注解

    • @Component: 通用注解,标记为组件,通常用于类上方。
    @Componentpublic class MyService {    // 利用autowired获取其他组件}
    • @Bean: 用于将对象注册到Spring的IOC容器中。
    @Bean(name = "myBean")public MyBean myBean() {    return new MyBean();}
    • @RestController: used for RESTful controller。
    @RestControllerpublic class MyController {    // 与@component类似}
    • @ComponentScan: 用于指定要扫描的包结构。
  • 用于注入数据的注解

    • @Autowired: 给容器自动注入依赖对象。
    @Autowiredprivate MyService myService;
    • 通过@Qualifier可以指定具体的Bean。例如:
    @Autowired@Qualifier("myQualifier") // 使用自定义idprivate MyService myService;
  • 用于改变作用范围的注解

    • @Scope: 用于改变组件的作用范围。例如:
    @Component@Scope("prototype") // 单例情况public MyService myService() {    return new MyService();}
  • 和生命周期有关的注解

    • @PostConstruct: 在对象初始化完成后执行。
    @PostConstructpublic void postConstruct() {    // 初始化逻辑}
    • @PreDestroy: 在对象销毁前执行。
    @PreDestroypublic void preDestroy() {    // cleanup逻辑}

  • 注入与配置的比较

    • 注入需要配置,注解不需要注入。
      • 使用注解的优势在于无需手动配置,框架自动扫描和注入。
      • 配置方式(如xml或properties文件)更适合自定义需求,但需要更多手动工作。

    关于表达式的注意事项

    • 关注注解写在哪些地方:主要是组件类、服务类和控制器类。
    • 关注数据来源:从IOC容器中获取或通过自定义方法获取。

    注解示例总结

    示例1:基于注解的组件注入

    @Component("myComponent")public class MyComponent {    @Autowired    @Qualifier("myQualifier")    private MyService myService;        public MyComponent() {        // 初始化逻辑    }        @PostConstruct    public void setUp() {        // 初始化方法    }}

    示例2:基于xml的IOC配置


    通过合理搭建IOC环境并使用注解,可以实现在代码中实现松耦合,提升开发效率,降低维护难度。以上内容供开发者参考,在项目实施前请根据实际需求选择合适的注解组合。

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

    你可能感兴趣的文章
    [PHP] error_reporting(0)可以屏蔽Fatal error错误
    查看>>
    [PHP] 解决php中上传大文件的错误
    查看>>
    [Linux] 使用awk比较两个文件的内容
    查看>>
    [Git] 彻底删除github上的某个文件以及他的提交历史
    查看>>
    [Go] gin框架渲染html字符串
    查看>>
    [js] js中的闭包以及特点
    查看>>
    [操作系统]内存连续分配管理方式
    查看>>
    [Go] json.Unmarshal()解析后存储的结构体定义
    查看>>
    [PHP]PHP不支持方法重载和只支持方法覆盖
    查看>>
    [Go] 获取Go二进制文件的真正执行路径os.Args
    查看>>
    java Map
    查看>>
    scala Tuple入门到熟悉
    查看>>
    RDD partitioner入门详解
    查看>>
    presto查询报错
    查看>>
    superset报错
    查看>>
    Hive 分组取Top N
    查看>>
    yarn开启Label Scheduler
    查看>>
    Spark sample入门到精通
    查看>>
    C++ Primer Plus【复习笔记】-【复合类型】
    查看>>
    前端一些要会的知识点
    查看>>