在看java继承这一块的时候发现了一个问题,即父类未被子类覆盖的方法是如何调用的? 是子类拥有了父类的该方法只是没有显示表示,还是子类调用了父类的该方法. 为此做了一下验证 代码如下: public class One { protected void printA() { System.out.println("父类printA"); } private void printB() { System.out.println("父类printB"); } priva…
Spring中EmptyResultDataAccessException异常产生的原理及处理方法 Spring中使用JdbcTemplate的queryForObject方法,当查不到数据时会抛出如下异常: org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0 使用Debug进行调试时,发现是在DataAccessUtils的requiredSing…
spring中的传播性 个人认为就是对方法的设置 其作用能传播到里面包含的方法上…
Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring容器中,由spring容器实例化bean然后交给程序员.spring的依赖注入有属性注入.构造函数注入.工厂方法注入等多种方式,下面用几个简单的栗子来一一道来. 一.首先是属性注入: 代码001 1 <?xml version="1.0" encoding="UTF-8&q…
上篇博客我们聊了<JavaEE开发之Spring中的依赖注入以及AOP>,本篇博客我们就来聊一下Spring框架中的Bean的作用域以及Bean的Init和Destroy方法,然后在聊一下Spring中的EL表达式.在Spring框架中我们可以使用@Scope注解来指定我们定义的Bean的作用域.下方会具体介绍几种参数的作用域. 在创建Bean时我们可以使用Java配置的方式,也就是@Bean注解的initMethod属性和destroyMethod属性来指定对应Bean的init()方法和d…
实现多态的三个条件:1.要有继承2.要有抽象方法重写3.用父类指针(引用)指向子类对象 重载重写重定义的区别: 1.重载:在同一个类中进行; 编译时根据参数类型和个数决定方法调用; 子类无法重载父类; 父类同名方法被子类该方法覆盖. 2.重写:在父类和子类之间进行; 父类与子类方法有完全相同类型; 在运行时根据具体对象类型决定方法调用; 3.在重写中有抽象方法的会产生多态;没有使用抽象方法叫重定义 以下具体代码具体分析: package test3;abstract class Shape{ /…
我认为是这样,类的成员函数都在代码区,不同的类的成员函数在代码区有自己的类名称空间限制,类的虚函数在虚函数表中,程序执行的时候,是先在虚函数表中找该成员函数,如果没有找到,就去该类在代码区的成员函数中去找. 所以如果父类的成员函数加上virtual时,访问的时候是先在虚函数表中查找,如果找到了,就执行,没找到就再在该类的代码区查找.所以父类普通的成员函数只能在父类的代码区找到. 也就是说通过父类指针找普通成员函数时,虽然父类指针指向子类对象,通过父类指针只能访问子类对象的数据成员(部分,父类独有…
要想讲清楚spring中bean的生命周期,真的是不容易,以AnnotationConfigApplicationContext上下文为基础来讲解bean的生命周期,AnnotationConfigApplicationContext是基于注解的上下文,使用XML的方式现在很少见,所以以此上下文为基础,使用XML的上下文ClassPathXmlApplicationContext的步骤和AnnotationConfigApplicationContext类似. 了解过spring源码的都知道,在…
拦截器的实现原理很简单,就是动态代理,实现AOP机制.当外部调用被拦截bean的拦截方法时,可以选择在拦截之前或者之后等条件执行拦截方法之外的逻辑,比如特殊权限验证,参数修正等操作. 但是最近在项目中要在一个事务中跨数据源进行操作.数据库跨源就不在这里说了,可以自行百度. 这里出现的问题就是,如果我们要拦截某个类的多个方法,且在该类的方法中使用this调用要拦截的方法时会导致拦截失败. 这样说有点抽象,看一个代码: package com.intsmaze.before; public clas…
//调用私有方法package com.java.test; public class PrivateMethod { private String sayHello(String name) { return "hello "+name; } } 测试: package com.java.test; import java.lang.reflect.Method; public class PrivateMethodTest { public static void main(Str…
运行环境 idea 2017.1.1 spring 3.2.9.RELEASE 需求背景 需要实现一个功能,该功能有2个场景A.B,大同小异 抽象一个抽象基类Base,实现了基本相同的方法BaseMethod,其中使用到Bean类中的方法 A.B分别继承Base,重写BaseMethod方法,在调用super.BaseMethod()的基础上补充自己的差异代码 错误实现与描述 1.在Base基类中注入Bean,使用@Resource注解,在子类A.B中调用super.BaseMethod()时,…
spring的配置文件可能会有多个<property name="a" ref="b" />就是找当前配置文件里的bean 也就是id为b的 <ref bean ="b"/> 是寻找全局中的 bean, 跨文件; 在工作中一个项目spring的配置文件 肯定有好几个用<ref bean="b" /> 来关联指定在其他xml文件中的bean很方便而且不容易出错 其实<ref标签里 有3种…
代码: test.py import student def main(): st = student.student(1001, 'tommy', 18) st.sing() st.dance() if (__name__ == "__main__"): main() 关键: if (__name__ == "__main__"): #表示在命令行中输入 python test.py 时就会执行 main() 方法 main() 这个输出一下就知道了: print…
1 @Slf4j 2 @RestController 3 @Component 4 public class VouchersReceiverController implements MessageListener { 5 6 @Autowired 7 private VouchersService vouchersService; 8 9 String MerchantCode = PropertyReader.getValue("MerchantCode"); 10 11 /**…
在Spring容器中为一个bean配置依赖注入有三种方式: · 使用属性的setter方法注入  这是最常用的方式: · 使用构造器注入: · 使用Filed注入(用于注解方式). 使用属性的setter方法注入 首先要配置被注入的bean,在该bean对应的类中,应该有要注入的对象属性或者基本数据类型的属性.例如:为UserBiz类注入UserDAO,同时为UserBiz注入基本数据类型String,那么这时,就要为UserDAO对象和String类型设置setter方法.,用于进行依赖注入.…
一.使用注解的DI实现 1.@Resource 使用该注解能够实现引用型属性的DI实现,该注解能够根据属性名和属性类型自动给属性赋值.一般使用@Resource(name="student")的形式明确指定名称,这样就只能根据属性名来填充值了. 步骤: (1)导入命名空间:命名空间示例 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.spr…
  在观察线上系统的运行情况下,发现在错误日志中有这类错误信息,org.springframework.core.task.TaskRejectedException,于是便对ThreadPoolTaskExecutor类做下梳理. 1.ThreadPoolExecutor Spring中的ThreadPoolTaskExecutor是借助于JDK并发包中的java.util.concurrent.ThreadPoolExecutor来实现的.下面先学习下ThreadPoolExecutor中的…
在前面的两篇博文<一次性讲清楚spring中bean的生命周期之一:getSingleton方法>和<一次性讲清楚spring中bean的生命周期之二:FactoryBean的前世今生>中分析了spring中bean生命周期的过程中的getSingleton方法和getObjectForBeanInstance方法,今天来分析另外一个重要的方法createBean方法.分析的入口是AbstractBeanFacotry.doGetBean方法,如下图, 这就是本次分析的入口.下面看…
之前写过bean的解析,这篇来讲讲bean的加载,加载要比bean的解析复杂些,该文之前在小编原文中有发表过,要看原文的可以直接点击原文查看,从之前的例子开始,Spring中加载一个bean的方式: TestBean bean = factory.getBean("testBean"); 来看看getBean(String name)方法源码, @Override public Object getBean(String name) throws BeansException { re…
1.      文档介绍 1.1.      为什么要写这个文档 接触Spring和MyBatis也挺久的了,但是一直还停留在使用的层面上,导致很多时候光知道怎么用,而不知道其具体原理,这样就很难做一些针对性的优化工作,Spring和MyBatis都已经是很庞大的框架了,分析起来会需要很多的时间,所以我先从两者之间的中间件MyBatis-Spring开始,一步一步开始学习两个框架的原理和精髓 1.2.      MyBatis-Spring是什么 当我们在使用MyBatis时,一般是编写一个Ma…
一.接口与归一化设计 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 由于python中没有Interface方法,根据Java接口的定义,可以抽象出python中的接口:一个类所具有的方法的特征集合. 可以通过继承来实现接口方法,在python中,继承有两种用途: 继承基类的方法,并且做出自己的改变或者扩展(代码重用) 声明某个子类兼容于某基类,定义一个接口类Inte…
Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此时需要通过接口getBean(Class<T> requiredType)来获取Bean: 如果该Bean找不到则抛异常:NoSu…
关于父类引用指向子类对象 例如: 有以下2个类 public class Father { public int age = 70; public static string name = "父亲"; } public class Son : Father { public int age = 30; public static string name = "儿子"; } Father f=new Son(); 这种用法叫做"父类引用指向子类对象,或者叫&…
Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此时需要通过接口getBean(Class<T> requiredType)来获取Bean: 如果该Bean找不到则抛异常:NoSu…
一直在用Spring,其实对其了解甚少,刚去了解了一下Spring中Bean的命名问题以及ref和idref之间的区别,略作记录,以备后查. Spring中Bean的命名 1.每个Bean可以有一个id属性,并可以根据该id在IoC容器中查找该Bean,该id属性值必须在IoC容器中唯一: 2.可以不指定id属性,只指定全限定类名,如: <bean class="com.zyh.spring3.hello.StaticBeanFactory"></bean> 此…
GitHub 3.7k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 3.7k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 3.7k Star 的Java工程师成神之路 ,真的确定不来了解一下吗? 现在大部分的Spring项目都采用了基于注解的配置,采用了@Configuration 替换标签的做法.一行简单的注解就可以解决很多事情.但是,其实每一个注解背后都有很多值得学习和思考的内容.这些思考的点也是很多大厂面试官喜欢问的内容. 在一次关于…
现在大部分的Spring项目都采用了基于注解的配置,采用了@Configuration 替换标签的做法.一行简单的注解就可以解决很多事情.但是,其实每一个注解背后都有很多值得学习和思考的内容.这些思考的点也是很多大厂面试官喜欢问的内容. 在一次关于Spring注解的面试中,可能会经历面试官的一段夺命连环问: @Configuration有什么用?@Configuration和XML有什么区别?哪种好?Spring是如何基于来获取Bean的定义的?@Autowired . @Inject.@Res…
1.从缓存中.优先从一级缓存中拿,有则返回. 如果没有,则从二级缓存中获取,有则返回. 如果二级缓存中拿不到,则从三级缓存中拿,能拿到,则从三级缓存中删除,移到二级缓存. 如果三级缓存也没有,则返回null. 2. 如果是单例模式, 则走createBean 的流程,进行bean对象的实例化. 2.1 获取到该beanDefinition对应的字节码对象. 2.2 prepareMethodOverrides. 检查beanDefinition对象的每一个methodOverride的对象.如果…
一.前言   最近在复习Spring的相关内容,刚刚大致研究了一下Spring中,AOP的实现原理.这篇博客就来简单地聊一聊Spring的AOP是如何实现的,并通过一个简单的测试用例来验证一下.废话不多说,直接开始. 二.正文 2.1 Spring AOP的实现原理   Spring的AOP实现原理其实很简单,就是通过动态代理实现的.如果我们为Spring的某个bean配置了切面,那么Spring在创建这个bean的时候,实际上创建的是这个bean的一个代理对象,我们后续对bean中方法的调用,…
Bean的装配方式 简单记录-Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)-Spring中的Bean 文章目录 Bean的装配方式 基于XML的装配 基于注解(Annotation)的装配 自动装配 IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC. 控制反转(IoC)是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式.在Spring中实现…