当前位置: 首页 > news >正文

机电类网站模板网站排名优化培训电话

机电类网站模板,网站排名优化培训电话,网站支付功能报价,ppt模板背景图掌握控制反转#xff08;IOC#xff09;和依赖注入#xff08;DI#xff09;是理解Spring Boot框架的关键 一、传统开发模式的痛点 典型场景#xff1a;用户服务调用用户仓库 // 传统实现#xff08;紧耦合#xff09; public class UserService {private UserReposi…掌握控制反转IOC和依赖注入DI是理解Spring Boot框架的关键 一、传统开发模式的痛点 典型场景用户服务调用用户仓库 // 传统实现紧耦合 public class UserService {private UserRepository userRepo new UserRepository();public User findUser(Long id) {return userRepo.findById(id);} } 问题分析 UserService 主动创建UserRepository实例控制权在Service变更实现类如MysqlUserRepo→MongoUserRepo需修改源码单元测试需真实数据库难以Mock 二、IOC控制反转Inversion of Control 核心思想将对象创建权交给容器 // Spring IOC实现 Component public class UserService {private UserRepository userRepo;// 不再主动创建对象 } 运作原理 Spring启动时扫描Component, Service等注解自动创建Bean实例存入IOC容器内存数据库容器管理Bean的生命周期创建→装配→销毁 IOC优势 解耦调用者与被调用者分离 资源集中管理容器统一分配对象 可扩展性方便替换实现类 三、DI依赖注入Dependency Injection 核心思想由容器动态注入依赖对象 Spring提供三种主流注入方式 1. 构造器注入Spring官方推荐 Service public class UserService {private final UserRepository userRepo;// 容器自动注入依赖Autowiredpublic UserService(UserRepository userRepo) {this.userRepo userRepo;} } 优势 保证依赖不可变final关键字 避免循环依赖问题 明确依赖关系 2. Setter注入 Service public class UserService {private UserRepository userRepo;Autowiredpublic void setUserRepo(UserRepository userRepo) {this.userRepo userRepo;} } 适用场景可选依赖或需要重新配置的依赖 3. 字段注入 Service public class UserService {Autowired // 直接注入字段private UserRepository userRepo; } 注意虽然简洁但不利于单元测试需通过反射注入 四、IOC容器工作流程 sequenceDiagram启动类-IOC容器 SpringBootApplicationIOC容器-扫描器 组件扫描扫描器-Bean工厂 发现Component/BeanBean工厂-依赖解析 分析依赖关系依赖解析-DI引擎 创建依赖图谱DI引擎-Bean实例化 构造器Setter注入Bean实例化-IOC容器 托管BeanIOC容器-应用 提供运行时Bean 关键注解解析  注解 作用 示例 Component 通用Bean声明 Component public class MyBean Autowired 自动依赖注入 Autowired private Dependency dep; Qualifier 解决歧义注入 Qualifier(mysqlImpl) Primary 设置首选Bean Bean Primary Lazy 延迟初始化 Lazy Service 五、彻底理解IOC与DI的关系 概念对比表 概念 控制反转 (IOC) 依赖注入 (DI) 核心思想 转移对象控制权 实现控制反转的具体手段 实现方式 容器托管Bean 通过构造器/Setter注入依赖 关注点 谁控制对象的生命周期 如何传递依赖对象 关系 设计思想 具体实现技术 重要结论 DI是IOC的一种实现方式还有服务定位器等Spring选择DI实现IOC 六、最佳实践与常见误区 正确姿势 // 1. 使用构造器注入 final Service public class OrderService {private final PaymentService paymentService;Autowired // Spring 4.3可省略public OrderService(PaymentService paymentService) {this.paymentService paymentService;} }// 2. 面向接口编程 public interface UserRepository {...} Repository public class JpaUserRepository implements UserRepository {...}// 3. 使用Configuration声明配置类 Configuration public class AppConfig {Beanpublic DataSource dataSource() {return new HikariDataSource();} } 典型错误 // 反例1在Bean中主动new对象 Service public class UserService {private UserRepository repo new UserRepository(); // 破坏IOC }// 反例2循环依赖 Service public class A {Autowired B b; } Service public class B {Autowired A a; // 启动报错 } 七、高频面试题速答 Q1IOC和DI有什么区别 答IOC是设计目标控制权反转DI是实现手段依赖注入 Q2Autowired和Resource有何不同 答 Autowired按类型注入支持Primary和QualifierResource按名称注入JDK标准注解 Q3如何解决多个同类型Bean的冲突 答三种方案 用Qualifier(beanName)指定名称在目标Bean添加Primary注解使用Resource(namebeanName) 最后总结 IOC  容器掌控对象生命周期程序→容器 DI  容器自动注入依赖容器→程序 掌握Autowired构造器注入是Spring Boot开发基础⚡ 理解二者关系即掌握Spring框架的核心设计哲学
http://www.w-s-a.com/news/341461/

相关文章:

  • 做线上交互的网站分销平台
  • 培训机构网站开发江门cms模板建站
  • 网站描述模板建筑模型网站有哪些
  • 域名注册费用张家界seo
  • 淘宝联盟怎么自己做网站山西省住房与城乡建设厅网站
  • 最新网站建设常见问题使用微信推广的各种方法
  • 购物网站建设课程设计报告做木工的网站
  • 扶沟县网站开发网站建设在哪里进行
  • 查看网站服务器信息网站首页地址 网站域名
  • 网站网站制作网站的ui界面设计案例分析
  • 怎么查网站是否备案成都装修公司联系电话
  • 佛山免费发布信息的网站oa办公系统排行榜
  • 南湖区建设街道办事处网站汕头建设银行各支行电话
  • 复古风格网站网站套餐方案
  • 界面设计做的好的网站旅游商城网站模板
  • 大型电子商务网站 服务器硬件 cpu 内存 硬盘 2014美食网站开发意义
  • 建立网站的目的和意义网站建设寻求
  • 邢台手机网站建设设计师培训心得
  • 营销网站怎么做丽水微信网站建设哪家好
  • 南昌定制网站开发多少钱东阿县城市建设局网站
  • 浙江网站建设公司南昌seo招聘
  • 工业软件有哪些专业seo站长工具全面查询网站
  • 山东兴华建设集团有限公司网站和京东一样做电子产品的网站
  • 网站建设谢辞关于h5的网站模板
  • 网站改版提交WordPress360收录
  • 省级网站 开发建设 资质在国外怎么做网站
  • 中商华兴建设有限公司网站我的世界查找建筑网站
  • 广东网站设计公司百度推广免费送网站
  • 高密做网站哪家好网站建设预算
  • 免费wordpress网站模板重庆如何做聚政网站