Spring实践指南:核心概念与依赖注入

需积分: 9 2 下载量 77 浏览量 更新于2024-07-23 收藏 1.14MB PDF 举报
"SPRING BY EXAMPLE 是一本介绍Spring框架的书籍,涵盖了Spring的起源、核心概念、依赖注入等关键知识点,并深入讲解了Spring在实际开发中的应用。" 在Spring框架的世界里,"SPRING BY EXAMPLE" 提供了一个全面的指南,帮助读者理解Spring的发展历程和设计哲学。书的前言提到了Spring的进化过程——从智能设计到自然演化的演变,强调了Spring的核心理念。作者希望通过这本书展示Spring如何通过演化而非人为设计来满足不断变化的软件需求。 第一章"Spring: Evolution Over Intelligent Design"回顾了Spring的历史,阐述了它从依赖倒置原则发展到依赖注入的过程。依赖倒置是面向对象设计中的一个基本原则,它提倡高层模块不应该依赖于底层模块,两者应该依赖于抽象。而依赖注入(Dependency Injection, DI)作为依赖倒置的实现方式,使得组件之间的耦合度降低,提高了代码的可测试性和可维护性。 第二章则介绍了本书的目标,旨在让读者理解Spring的基本概念和工作方式,同时提醒读者注意书中采用的格式和结构。 第一部分"Spring Introduction"深入探讨了Spring的核心概念,特别是"Spring in Context: Core Concepts"章节。该章节详细讲解了Spring如何通过控制反转(Inversion of Control, IoC)实现bean管理。IoC意味着应用程序的控制权由外部容器(如Spring框架)负责,而不是由组件自身管理。接着,书中通过实例展示了如何利用IoC进行bean的创建、构造器注入、setter注入以及引用注入,进一步解释了DI的工作原理。 此外,书中还提供了创建Spring应用程序的步骤,包括设置环境和创建ApplicationContext,以及如何编写单元测试来验证由ApplicationContext管理的bean。 书中的第二部分"Core"将深入到Spring的更多核心功能,如AspectJ的运行时织入(Load-time Weaving),用于实现面向切面编程(AOP)。这部分会涵盖JVM参数配置、Spring配置和AspectJ配置的细节,通过代码示例来展示如何在Spring中集成和使用AspectJ。 第三部分"Persistence"将探讨Spring在持久化层的应用,如简单的JDBC模板使用,这将涉及数据库操作的封装和事务管理等概念。 "SPRING BY EXAMPLE"是一本深入浅出的Spring教程,适合初学者和有经验的开发者参考,它不仅教授Spring的基础知识,还提供了实践指导,帮助读者更好地理解和应用Spring框架。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Ambiguous mapping. Cannot map 'sendEmail' method com.example.spring.controller.Others.SendEmail#sendEmail(SendEmailFilter) to { [/send]}: There is already 'rabbitMqController' bean method com.example.spring.controller.Others.RabbitMqController#send() mapped. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1751) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:915) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1291) at com.example.spring.Application.main(Application.java:11) Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'sendEmail' method

2023-04-20 上传