在实现类的第一行加个断点,在调试step into进入了代理的时候,Resume就会到达下一个断点,也就是进入了你所想要的实现类。
注意,在重启服务器时; 需要将此断点去掉,否则不能已Debug方式重启服务器,原因是:已Debug方式启动服务器时,服务器会扫描程序断点,一般情况下的断点,服务器都能扫描过去,但是对于这种注入式的断点,服务器无法通过,原因一,可能是对于spring或者其他框架代码加入断点后,无法通过服务器扫描;原因二,自己代码的影响。
package com.syit.common; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.DefaultBeanNameGenerator; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; /** * * Spring bean 命名策略生成 */ public class MyBeanNameGenerator extends DefaultBeanNameGenerator { /** * 定义spring容器Bean名字与实现类的映射 * 比如GcbmglServiceImpl类,spring容器名字就是gcbmglService */ public String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry) { try { Class<?> clazz = Class.forName(definition.getBeanClassName()); String simpleName = ClassUtils.getShortName(clazz); simpleName = StringUtils.uncapitalize(simpleName); if (simpleName.endsWith("Impl")) { simpleName = simpleName.substring(0, simpleName.length() - 4); } else { simpleName = super.generateBeanName(definition, registry); } return simpleName; } catch (ClassNotFoundException e) { return super.generateBeanName(definition, registry); } } }
<context:component-scan base-package="com.syit" name-generator="com.syit.common.MyBeanNameGenerator" />
相关推荐
使用@Controller注解标记类,用@RequestMapping或@GetMapping、@PostMapping等注解定义处理请求的方法。 5. **Model**: Model代表应用程序的数据模型,通常由JavaBean或POJO表示。Controller将数据封装到...
3. **AOP(Aspect Oriented Programming, 面向切面编程)**:Spring提供了基于代理的AOP实现,允许开发者定义切面,实现跨切面的代码逻辑,如日志、事务管理等。 4. **数据访问/集成(Data Access/Integration)**...
3. **阅读和理解源码**:在Eclipse中,可以逐个浏览类和方法,查看它们的实现细节,这对于理解Spring的工作原理非常有帮助。 4. **调试**:设置断点,运行Spring源码,可以深入理解框架在运行时的行为。 5. **实践...
Spring AOP支持两种实现方式:基于代理的AOP和基于注解的AOP。 6. **模块结构** Spring框架分为多个模块,如Web MVC模块(用于构建Web应用程序)、Data Access/Integration模块(包括JDBC、ORM、OXM、JPA和Tx),...
9. **调试和分析**:在Eclipse中,你可以设置断点,启动调试器来逐步执行源码,查看变量的变化,这对于理解Spring的工作流程非常有帮助。 10. **实践与应用**:理论结合实践是最好的学习方式。尝试修改源码,然后在...
在这个"SpringAOP的例子"中,我们将深入探讨如何在Eclipse环境下利用Spring AOP和动态代理来实现这些功能。 首先,让我们理解什么是AOP。AOP是一种编程范式,旨在减少代码的重复性和增强可维护性。在传统的OOP中,...
在源码中,`DefaultAdvisorAutoProxyCreator`类是AOP代理的创建者,`MethodBeforeAdvice`、`AfterReturningAdvice`等接口定义了不同类型的前置、后置通知。 在Spring中,还有一套完善的事件发布和监听机制,通过`...
这个"spring demo"压缩包提供了一个完整的示例,其中包含了运行Spring应用程序所需的全部JAR文件,这意味着你无需额外下载任何依赖就能在Eclipse集成开发环境中直接进行运行和调试。 **Spring 框架的核心概念** 1....
Eclipse是一款广泛使用的集成开发环境(IDE),尤其在Java开发者中极为流行。它提供了一整套工具,用于编写、调试和部署Java应用程序。Struts2则是一个基于MVC(Model-View-Controller)设计模式的Java web应用框架...
JDK代理用于接口实现类,CGLIB代理用于没有实现接口的类。 4. **配置AOP**:在Spring 3.0中,可以使用XML配置或者注解方式来声明AOP。XML配置通过`<aop:config>`和`<aop:advisor>`等元素定义切入点和通知。注解方式...
通过GroovyEclipse,开发者可以在Eclipse环境中舒适地编写、测试和运行Groovy代码,提高开发效率。 入门Groovy,首先需要了解其基本语法结构。Groovy的语法与Java类似,但更简洁。例如,类定义可以省略public关键字...
8. **Debugging and Testing**:STS强化了Eclipse的调试和测试功能,特别是在Spring环境下的应用,如支持断点调试、单元测试和集成测试。 9. **代码补全和智能提示**:STS提供了强大的代码补全和智能提示功能,对于...
在本教程中,我们将深入探讨如何在Eclipse IDE中配置并运行Spring Boot项目。Spring Boot以其简化Spring应用程序的创建和管理而闻名,它通过提供预配置的设置来消除繁重的初始化工作。Eclipse作为Java开发者的首选...
这部分可以通过Spring MVC中的`@PostMapping`注解来实现。具体实现代码如下: ```java import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation....
- **代码智能提示与自动补全**:STS4提供了强大的代码智能感知功能,对于Spring相关的注解、类和方法,能进行自动补全,提高编码效率。 - **Spring Boot启动器支持**:集成Spring Initializr,可以快速创建Spring ...
Spring Web MVC是Spring框架的核心模块,它为构建Web应用程序提供了模型-视图-控制器(MVC)架构。这个"spring-webmvc.rar"压缩包包含了Spring ...在Eclipse中导入源码后,可以结合断点调试,更深入地理解其工作原理。
1. **代码智能提示**:提供对Spring XML配置文件的自动补全,以及对Spring注解的智能感知,帮助开发者快速编写代码。 2. **项目模板**:内置多种Spring项目的创建模板,如MVC、RESTful Web Services等,简化项目...
【标题】"maven-spring-mybatis"是一个项目示例,展示了如何将Spring框架与MyBatis持久层框架集成,以便在Java应用中实现高效的数据访问。该项目利用Maven进行依赖管理和构建流程。 【描述】中提到的关键知识点包括...
此外,Spring Data的支持使得数据库操作变得更加直观,可以通过简单的注解和模板来实现数据访问层。 在项目构建方面,STS集成了Maven和Gradle两种常见的构建工具,可以方便地进行项目构建和依赖管理。通过内置的Git...
但在一个典型的Spring Boot项目中,我们期望找到如pom.xml(如果是Maven项目)或build.gradle(如果是Gradle项目)这样的构建文件,src/main/java目录下会有包含主应用类(通常有@SpringBootApplication注解)和...