自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Java Spring初学者之调试器里括号包含的类含义

如图:表示在执行类的构造函数。圆括号里代表执行的构造函数是定义在哪个实际类里的:从继承树可以看出,ClassPathXmlApplicationContext最终的父类为AbstractApplicationContext:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-07-31 14:56:29 608

原创 Java Spring ClassPathXmlApplicationContext是如何判断容器内包含某个Bean的

ClassPathXmlApplicationContext的获得方式:ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext(“Beans.xml”);重要的成员变量:beanFactory: DefaultListableBeanFactorybeanFactoryPostProcessors: ArrayListclassLoader: sun.misc.Launcher$AppClassLoad

2020-07-31 14:35:26 690

原创 使用Java Spring消费MySQL中的数据库存储过程

进行这个练习的一些先决条件。创建一张student数据库表:CREATE TABLE Student( ID INT NOT NULL AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID));创建一个存储过程:DELIMITER $$DROP PROCEDURE IF EXISTS `TEST`.`getRecord` $$CREATE PROCEDURE `T

2020-07-30 21:19:50 853

原创 如何阻止指定类型的SAP CRM附件被上传到服务器

Requirement: end user could not be allowed to upload attachment whose size is greater than a given limit for example 400KB.Solution:(1) Create a BAdI implementation via SPRO->Customer Relationship Management->Basic Functions->Content Management-

2020-07-30 11:48:45 864

原创 Spring JDBC 框架,我的学习笔记

Student.java:StudentDAO: 一个接口setDataSource方法注入javax.sql.DataSource的依赖:StudentMapper: java.sql.ResultSet包含的是单条记录:StudentJDBCTemplate: 是接口StudentDAO的实现类。关键就是setDataSource方法,需要研究其是何时被调用的。DataSource被注入之后,基于这个注入的DataSource创建jdbcTemplateObject实例。Java代码里

2020-07-30 11:35:14 891

原创 如何在MySQL中创建存储过程

看个具体的例子:在TEST数据库中创建一个存储过程,名为getRecord:DELIMITER $$DROP PROCEDURE IF EXISTS `TEST`.`getRecord` $$CREATE PROCEDURE `TEST`.`getRecord` (IN in_id INTEGER,OUT out_name VARCHAR(20),OUT out_age INTEGER)BEGIN SELECT name, age INTO out_name, out_age

2020-07-30 11:27:28 890

原创 Spring JDBC 框架一个最简单的Hello World级别的例子

本地安装mySQL数据库社区版,如果不知道如何安装,可以查看我这篇文章:MySQL社区版的下载和安装https://blog.csdn.net/i042416/article/details/107600796使用普通的 JDBC 数据库时,需要繁琐地写很多代码来处理异常,打开和关闭数据库连接等。但 Spring JDBC 框架负责所有的底层细节,从开始打开连接,准备和执行 SQL 语句,处理异常,处理事务,到最后关闭连接。Spring JDBC的JdbcTemplate 类执行 SQL 查询、更新

2020-07-27 18:05:05 1191

原创 Could not load JDBC driver class [com.mysql.jdbc.Driver]

我使用Spring JDBC编程时,遇到一个错误消息:Could not load JDBC driver class [com.mysql.jdbc.Driver]完整的错误为:Jul 27, 2020 12:22:26 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefreshINFO: Refreshing org.springframework.context.support.Cla

2020-07-27 16:45:59 1286

原创 mySQL初学者一些最常用的命令行

show databases;查看当前的数据库列表use mysql;进入某一个数据库show tables; 查看当前数据库下所有的数据库表show columns from user; 查看user数据库表的行定义show index from user; 查看user数据库表的索引信息SHOW TABLE STATUS LIKE ‘user%’\G要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-07-27 11:30:21 1314

原创 如何用命令行给mySQL添加用户

命令行netstat -ao | find “3306”, 查看MySQL默认端口号3306对应的进程id(pid)为30016:使用tasklist | find “30016” 查看pid 30016的进程对应的应用程序名为mysqld.exe:where mysqld即可查询到mysqld.exe的具体位置:进入mySQL客户端:mysql -u root -puse mysql;命令行:INSERT INTO user (Host,User,ssl_cipher,x509_i

2020-07-27 10:20:17 1313

原创 使用windows命令行查看mySQL应用的安装路径

命令行netstat -ao | find “3306”, 查看MySQL默认端口号3306对应的进程id(pid)为30016:使用tasklist | find “30016” 查看pid 30016的进程对应的应用程序名为mysqld.exe:where mysqld即可查询到mysqld.exe的具体位置:要获取更多Jerry的原创文章,请关注公众号"汪子熙":...

2020-07-27 10:08:13 1293

原创 解决MySQL Server Logs不能正常查看的问题

我安装完了MySQL社区版之后,在Workbench Centra的server Administration中点击Manage Instance:输入Root的用户名和密码,访问服务器实例localhost:3306点击Server Logs,发现无法查看日志文件:错误消息:An error appeared when looking for the log file “.CTUN50947961A.err”. Please verify that you can access the d

2020-07-26 22:19:32 1183

原创 MySQL社区版的下载和安装

下载地址:https://www.mysql.com/cn/products/community/点击立即下载:再点MySQL Installer for Windows:选择自己需要的版本下载:双击安装文件进行安装:默认端口:3306创建DB Admin user:安装完成之后,看到workbench Central页面如下图所示:命令行执行mysqladmin --version, 看到版本号,说明安装成功了:要获取更多Jerry的原创文章,请关注公众号"汪子熙"

2020-07-26 22:14:31 1362

原创 Spring中基于注解@AspectJ的AOP实现

@AspectJ 作为通过 Java 5 注释注释的普通的 Java 类,它指的是声明aspects 的一种风格。通过在基于架构的 XML 配置文件中包含以下元素,@AspectJ 支持是可用的。aop:aspectj-autoproxy/大致流程如下:(1) 首先利用注解声明一个Aspect:import org.aspectj.lang.annotation.Aspect;@Aspectpublic class AspectModule {}该aspect在Beans.xml中需要进行

2020-07-26 13:09:28 1287

原创 Spring AOP的一个具体例子

新建一个Logging类:我希望我的业务类的Java代码的方法,在执行前,执行后,返回方法后,以及抛出异常后,能够执行一些hook代码。这些hook代码就写在这个Logging类的对应方法里:beforeAdviceafterAdviceafterReturningAdviceAfterThrowingAdvice业务代码就是Student Bean:在这个MainApp.java里,调用了Student Bean的两个方法:getName和getAge. 我期望Logging类里定义的四

2020-07-26 12:17:25 522

原创 Spring AOP异常:Error creating bean with name ‘org.springframework.aop.aspectj.

异常:Jul 26, 2020 11:43:22 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefreshINFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4ee285c6: startup date [Sun Jul 26 11:43:22 CST 2020]; root o

2020-07-26 12:02:29 1331

原创 Spring 中基于 AOP 的 XML操作方式

Spring 框架的一个关键组件是面向方面的编程(AOP)框架。面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等。一些AOP术语:(1) aspect:一个模块具有一组提供横切需求的 APIs。例如,一个日志模块为了记录日志将被 AOP 方面调用。应用程序可以拥有任意数量的方面,这取决于需求。(2) joint po

2020-07-26 11:42:32 502

原创 Spring 中的如何自定义事件处理(Custom Event)

新建一个CustomEvent.java:import org.springframework.context.ApplicationEvent;public class CustomEvent extends ApplicationEvent{ public CustomEvent(Object source) { super(source); } public String toString(){ return "My Custom Event";

2020-07-26 10:10:26 1003

原创 Spring 中的事件处理

Spring 的核心是 ApplicationContext,它负责管理 beans 的完整生命周期。当加载 beans 时,ApplicationContext 发布某些类型的事件。例如,当上下文启动时,ContextStartedEvent 发布,当上下文停止时,ContextStoppedEvent 发布。通过 ApplicationEvent 类和 ApplicationListener 接口来提供在 ApplicationContext 中处理事件。如果一个 bean 实现 Applicatio

2020-07-26 09:55:23 969

原创 Spring 基于 Java 的配置 - 如何不用Beans.xml照样描述bean之间的依赖关系

看个具体的例子:首先是配置类,该类的作用相当于Spring常规依赖维护里的Beans.xml:import org.springframework.context.annotation.*;@Configurationpublic class TextEditorConfig { @Bean public TextEditor textEditor(){ return new TextEditor( spellChecker() ); } @Bean pu

2020-07-26 09:31:33 927

原创 Spring 基于 Java 的配置

@Configuration 和 @Bean 注解这两个注解一般配合使用。带有 @Configuration 的注解类表示这个类可以使用 Spring IoC 容器作为 bean 定义的来源。@Bean 注解告诉 Spring,一个带有 @Bean 的注解方法将返回一个对象,该对象应该被注册为在 Spring 应用程序上下文中的 bean。import org.springframework.context.annotation.*;@Configurationpublic class Hell

2020-07-25 21:46:18 897

原创 Spring中的Spring JSR-250 注释之@Resource

@Resource注解相当于By Name装配方式。TextEditor:package com.sap;import javax.annotation.Resource;public class TextEditor { private SpellChecker spellChecker; @Resource(name= "spellChecker223") public void setSpellChecker( SpellChecker spellChecker ){

2020-07-25 15:46:02 885

原创 Spring中的Spring JSR-250 注释

Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。@PostConstruct 和 @PreDestroy 注释为了定义一个 bean 的安装和卸载,我们使用 init-method 和/或 destroy-method 参数简单的声明一下 。init-method 属性指定了一个方法,该方法在 bean 的实例化阶段会立即被调用。同样地,destroy-metho

2020-07-25 15:27:02 817

原创 Spring 基于注解(annotation)的配置之@Qualifier注解

使用@Qualifier可以分别为同样类型的Bean分别注入不同的依赖值。看个例子:Student.java:package com.sap;public class Student { private Integer age; private String name; public void setAge(Integer age) { this.age = age; } public Integer getAge() { return a

2020-07-25 13:12:48 747

原创 Spring 基于注解(annotation)的配置之@Autowired注解

Setter 方法中的 @Autowired当 Spring遇到一个在 setter 方法中使用的 @Autowired 注解,它会试图执行 byType 自动连接。换言之,加了@Autowired的Setter方法等同于byType自动装配模式。看个例子:import org.springframework.beans.factory.annotation.Autowired;public class TextEditor { private SpellChecker spellChec

2020-07-25 12:46:24 777

原创 Spring 基于注解(annotation)的配置之@Required注解

从 Spring 2.5 开始就可以使用注解来配置依赖注入。注解连线在默认情况下在 Spring 容器中不打开。因此,在可以使用基于注解的连线之前,我们将需要在我们的 Spring 配置文件中启用它:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema

2020-07-25 11:43:17 800

原创 Spring 自动装配模式之构造函数装配方式

这种模式与 byType 非常相似,但它应用于构造器参数。Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 constructor。然后,它尝试把它的构造函数的参数与配置文件中 beans 名称中的一个进行匹配和连线。如果找到匹配项,它会注入这些 bean,否则,它会抛出异常。例如,在配置文件中,如果一个 bean 定义设置为通过构造函数自动装配,而且它有一个带有 SpellChecker 类型的参数之一的构造函数,那么 Spring 就会查找定义名

2020-07-25 10:49:49 393

原创 Spring 自动装配模式之byType

Spring 容器看作 beans,在 XML 配置文件中 beans 的 autowire 属性设置为 byType。然后,如果它的 type 恰好与配置文件中 beans 名称中的一个相匹配,它将尝试匹配和连接它的属性。如果找到匹配项,它将注入这些 beans,否则,它将抛出异常。在配置文件中,如果一个 bean 定义设置为自动装配 byType,并且它包含 SpellChecker 类型的 spellChec.

2020-07-25 10:27:25 397

原创 Spring Beans 自动装配

Spring 容器可以在不使用和 元素的情况下自动装配相互协作的 bean 之间的关系,这有助于减少编写一个大的基于 Spring 的应用程序的 XML 配置的数量。By Name使用By Name进行自动装配,beans.xml如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w

2020-07-25 10:10:35 347

原创 Spring 注入集合的成员变量属性

Spring支持list,set,map和prop四种集合类型的注入。看一个例子:JavaCollection这个类包含了上述介绍的4种集合类型的成员变量:import java.util.*;public class JavaCollection { List addressList; Set addressSet; Map addressMap; Properties addressProp; // a setter method to set List p

2020-07-25 09:37:26 372

原创 Spring 基于设值函数的依赖注入

看个例子:public class TextEditor { private SpellChecker spellChecker; // a setter method to inject the dependency. public void setSpellChecker(SpellChecker spellChecker) { System.out.println("Inside setSpellChecker." ); this.spellChecker

2020-07-24 16:20:18 442

原创 Spring 基于构造函数的依赖注入

当容器调用带有一组参数的类构造函数时,基于构造函数的依赖注入就完成了,其中每个参数代表一个对其他类的依赖。看个例子:TextEditor的源代码:public class TextEditor { private SpellChecker spellChecker; public TextEditor(SpellChecker spellChecker) { System.out.println("Inside TextEditor constructor." );

2020-07-24 13:09:45 392

原创 Spring Bean的继承

bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等。子 bean 的定义继承父定义的配置数据。子定义可以根据需要重写一些值,或者添加其他值。Spring Bean 定义的继承与 Java 类的继承无关,但是继承的概念是一样的。你可以定义一个父 bean 的定义作为模板和其他子 bean 就可以从父 bean 中继承所需的配置。当你使用基于 XML 的配置元数据时,通过使用父属性,指定父 bean 作为该属性的值来表明子 bean 的定义

2020-07-23 21:35:46 378

原创 Spring Bean 后置处理器PostProcessor

BeanPostProcessor 接口定义回调方法,可以实现该方法来提供自己的实例化逻辑,依赖解析逻辑等。可以在 Spring 容器通过插入一个或多个 BeanPostProcessor 的实现来完成实例化,配置和初始化一个bean之后实现一些自定义逻辑回调方法。可以配置多个 BeanPostProcessor 接口,通过设置 BeanPostProcessor 实现的 Ordered 接口提供的 order 属性来控制这些 BeanPostProcessor 接口的执行顺序。BeanPostProc

2020-07-23 14:07:51 325

原创 Spring Bean的生命周期

Bean的生命周期可以表达为:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁在MainApp.java 里注册一个在 AbstractApplicationContext 类中声明的关闭 hook 的 registerShutdownHook() 方法。它将确保正常关闭,并且调用相关的 destroy 方法:package com.sap;import org.springframework.context.support.AbstractApplicationContext

2020-07-23 13:47:01 334

原创 Spring里的容器和Bean对象

"控制反转"是指new实例工作不由程序员来做而是交给Spring容器来做。在Spring中BeanFactory是IOC容器的实际代表者。Spring 容器是 Spring 框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件。这些对象被称为 Spring Beans.通过阅读配置元数据提供的指令,容器知道对哪些对象进行实例化,配置和组装。配置元数据可以通过 XML,Java 注释或 Java 代

2020-07-23 13:13:08 353

原创 四种ABAP单元测试隔离(test isolation)技术

Hi friends,As far as I know test isolation is widely used in SAP internal to build unit test code, at least in my team. Test isolation in unit test means that in your production code you make use of some API(class method/Function module) which are develop

2020-07-23 12:23:10 348

原创 不借助Maven,使用Eclipse创建Hello World级别的Spring项目

本文适合没有任何Spring基础的初学者。从下面的链接下载Spring库文件:https://repo.spring.io/release/org/springframework/spring/5.0.0.RELEASE/http://commons.apache.org/proper/commons-logging/download_logging.cgi以及apache Common logging:在Eclipse里创建一个Java项目:在Config Build Path里,点击Ad

2020-07-23 12:18:11 321

原创 使用ant执行Java代码

一个小陷阱:如果用tomcat manager应用,即html页面点击reload,发起的HTTP请求的url:http://localhost:9032/manager/html/reload;jsessionid=BA373DFB9660EF7F30806C8BA2C6013C?path=/jerryjsp&org.apache.catalina.filters.CSRF_NONCE=9A8CB8A3E37A5A00E9B6B36629CEA257而如果想使用catalina-ant.jar

2020-07-22 14:50:58 450

原创 tomcat使用manager GUI应用和script分别reload应用的注意事项

一个小陷阱:如果用tomcat manager应用,即html页面点击reload,发起的HTTP请求的url:http://localhost:9032/manager/html/reload;jsessionid=BA373DFB9660EF7F30806C8BA2C6013C?path=/jerryjsp&org.apache.catalina.filters.CSRF_NONCE=9A8CB8A3E37A5A00E9B6B36629CEA257而如果想使用catalina-ant.jar

2020-07-22 13:56:09 443

提示
确定要删除当前文章?
取消 删除