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

Spring框架实现IOC

使用Spring框架实现IOC容器

Spring Framework是Java中最流行的IOC容器实现。通过注解配置方式可以快速实现依赖注入。

// 服务接口
public interface UserService {void addUser(String username);
}// 服务实现类
@Service
public class UserServiceImpl implements UserService {@Overridepublic void addUser(String username) {System.out.println("添加用户: " + username);}
}

配置类替代XML配置

使用Java配置类代替传统XML配置方式:

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {// 可以在此定义其他Bean
}

依赖注入示例

通过构造器注入和字段注入两种方式:

@RestController
public class UserController {// 字段注入@Autowiredprivate UserService userService;// 构造器注入(推荐方式)private final OrderService orderService;@Autowiredpublic UserController(OrderService orderService) {this.orderService = orderService;}@GetMapping("/addUser")public void addUser() {userService.addUser("testUser");}
}

完整示例运行

启动Spring Boot应用并测试:

@SpringBootApplication
public class Application {public static void main(String[] args) {ApplicationContext context = SpringApplication.run(Application.class, args);UserController controller = context.getBean(UserController.class);controller.addUser();}
}

自定义Bean配置

通过@Bean注解手动定义Bean:

@Configuration
public class CustomConfig {@Beanpublic DataSource dataSource() {return new DriverManagerDataSource();}@Beanpublic JdbcTemplate jdbcTemplate(DataSource dataSource) {return new JdbcTemplate(dataSource);}
}

条件化Bean配置

根据条件动态注册Bean:

@Configuration
public class ConditionalConfig {@Bean@ConditionalOnProperty(name = "cache.enabled", havingValue = "true")public CacheManager cacheManager() {return new ConcurrentMapCacheManager();}
}

这些示例展示了Java中高级IOC容器的使用方式,包括自动装配、条件配置和多种注入方式。Spring Framework提供了完整的IOC容器实现。

相关文章:

  • 【RTSP从零实践】1、根据RTSP协议实现一个RTSP服务
  • JavaScript篇:字母侦探:如何快速统计字符串里谁才是‘主角‘?
  • Improving Chinese Spelling Check by Character Pronunciation Prediction
  • 快速了解:单北斗终端的定义、作用与好处!
  • 基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
  • RD-Agent-Quant:一个以数据为中心的因素与模型联合优化的多智能体框架
  • ROS2,工作空间中新建了一个python脚本,需要之后作为节点运行。告诉我步骤?
  • Vibe Coding AI编程
  • 管道与进程间通信
  • FreeRTOS事件组-笔记
  • 抖音怎么下载视频?抖音怎么无水印下载别人的视频
  • LeetCode 08.06 面试题 汉诺塔 (Java)
  • springBoot 通过模板导出Excel文档的实现
  • 第一章 计算机系统构成及硬件基础知识
  • 基于Java的离散数学题库系统设计与实现:附完整源码与论文
  • Web前端基础:JavaScript
  • 混合云数据库连接问题:本地与云实例的兼容性挑战
  • AI推理服务的高可用架构设计
  • 如何区分 “通信网络安全防护” 与 “信息安全” 的考核重点?
  • 【JavaWeb】Docker项目部署
  • 南安淘宝网站建设/关键词免费网站
  • 长安做网站价格/推广一般去哪发帖
  • 网站建设7个基/自学seo大概需要多久
  • php开发系统网站建设/安卓优化软件
  • 四川做网站设计哪家好/灰色关键词怎么做排名
  • 泰州高端网站建设/怎么制作小程序