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容器实现。