bean

什么是JavaBean?

ぐ巨炮叔叔 提交于 2020-04-06 08:22:15
问题: I understood, I think, that a "Bean" is a Java class with properties and getters/setters. 我认为,“ Bean”是具有属性和getter / setter的Java类。 As much as I understand, it is the equivalent of a C struct. 据我了解,它等效于C结构。 Is that true? 真的吗? Also, is there a real syntactic difference between a bean and a regular class? 另外,bean和常规类之间是否存在真正的 语法 差异? Is there any special definition or an interface? 有没有特殊的定义或接口? Basically, why is there a term for this? 基本上,为什么会有一个术语呢? Also what does the Serializable interface mean? 还有 Serializable 接口是什么意思? 解决方案: 参考一: https://stackoom.com/question/DpJA/什么是JavaBean 参考二: https:/

设计模式学习---工厂模式

 ̄綄美尐妖づ 提交于 2020-04-06 06:05:31
工厂模式:主要用于实例化对象,把实例化对象代码与使用对象代码分开, 目的是降低系统中代码耦合度,并且增强了系统的扩展性,如果实例化一个对象的过长很复杂,需要一定的代码量,并且多处使用就会出现大量重复代码,则可以把这些实例化对象的代码放到工厂管理,可以减少重复代码并且维护时候也相对简单很多 。工厂模式分为三种实现方式 ,就是 简单工厂模式,工厂方法模式和抽象工厂模式 简单工厂模式 : 先抽象一个接口,所有Bean都实现该接口 public interface Bean { void massage(); } 接着就是几个Bean:User,Role,Auth public class Role implements Bean{ public void massage() { System. out .println( "this is a role" ); } } public class Auth implements Bean{ public void massage() { System. out .println( "this is an auth" ); } } public class User implements Bean{ public void massage() { System. out .println( "this is an user" ); } }

Spring Bean的生命周期

旧城冷巷雨未停 提交于 2020-04-06 03:45:25
容器开始启动: 如果Spring容器中注册了实现BeanFactoryPostProcessor接口的容器后处理器,实例化该容器后处理器,即调用构造函数创建实例 如果Spring容器中注册了实现BeanFactoryPostProcessor接口的容器后处理器,就调用BeanFactoryPostProcessor.postProcessBeanFactory()方法 容器运行中: 如果Spring容器中注册了实现InstantiationAwareBeanPostProcessor接口的Bean后处理器,就执行该Bean后处理器的postProcessBeforeInstantiation方法。 实例化bean,即调用Bean的构造函数 如果Spring容器中注册了实现InstantiationAwareBeanPostProcessor接口的Bean后处理器,就执行该Bean后处理器的postProcessAfterInstantiation方法。 如果Spring容器中注册了实现InstantiationAwareBeanPostProcessor接口的Bean后处理器,就执行该Bean后处理器的postProcessProperties方法。 如果Spring容器中注册了实现InstantiationAwareBeanPostProcessor接口的Bean后处理器

org.mybatis.spring.mapper.MapperScannerConfigurer的错误

两盒软妹~` 提交于 2020-04-05 22:08:59
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sqlsessionfactory' while setting bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlsessionfactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse

Spring源码系列2 - BeanFactory体系结构(BeanFactory和ApplicationContext)

China☆狼群 提交于 2020-04-05 19:42:35
BeanFactory体系结构 上面是BeanFactory的体系图,其有两个主要分支: ①一条是右侧部分的BeanFactory到最后的XmlBeanFactory这条分支。 该分支是IOC容器的底层设计,最后的DefaultListableBeanFactory则是spring提供给我们的作为默认的功能完整的底层容器来使用。该类还有个子类XmlBeanFactory,顾名思义是以XML配置方式来使用,但从Spring3.1开始XmlBeanFactory被标记为了过时的类,并推荐我们直接使用DefaultListableBeanFactory,配合XmlBeanDefinitionReader一起使用。 ClassPathResource resource = new ClassPathResource("classpath:com/lp/bean.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); //加载Bean定义 reader.loadBeanDefinitions(resource); //获取Bean User user =

Spring如何解决循环依赖

*爱你&永不变心* 提交于 2020-04-05 19:38:45
1.什么是循坏依赖  即循环引用,两个或多个bean相互引用,最终形成一个环。如图: 循环依赖图.png 2.什么是循环调用  循环调用是方法之间的环调用。循环调用无法解决,除非有终结条件,否则就是死循环,最终导致内存溢出错误。 3.构造器循环依赖  3.1 循环依赖过程 定义类依赖: Class A { private B b ; A ( B b ) { this . b = b ; } } Class B { private C c ; B ( C c ) { this . c = c ; } } Class C { private A a ; C ( A a ) { this . a = a ; } } JVM创建对象过程 如下图所示: 对象创建过程图.png 3.2 Spring解决构造器循环依赖  无法解决通过构造器注入构成的循环依赖,只能抛出BeanCurrentylyInCreationException异常表示循环依赖。  Spring容器将每一个正在创建的bean标识符放在一个“当前创建bean池”中,bean表示符在创建过程中将一直保持在这个池中,因此,如果在创建bean过程中发现自己已经在“当前创建bean池”中,将抛出BeanCurrentylyInCreationException异常,表示循环依赖;对于创建完毕的bean,将从“当前创建bean池

bean的生命周期

大兔子大兔子 提交于 2020-04-05 19:27:15
1、实例化一个Bean--也就是我们常说的new; 2、按照Spring上下文对实例化的Bean进行配置--也就是IOC注入; 3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值 4、如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(setBeanFactory(BeanFactory)传递的是Spring工厂自身(可以用这个方式来获取其它Bean,只需在Spring配置文件中配置一个普通的Bean就可以); 5、如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文(同样这个方式也可以实现步骤4的内容,但比4更好,因为ApplicationContext是BeanFactory的子接口,有更多的实现方法); 6、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor经常被用作是Bean内容的更改

Spring入门

杀马特。学长 韩版系。学妹 提交于 2020-04-05 18:18:15
Spring入门案例 Spring简介 Spring是什么 Spring 是一个IOC(控制反转)和AOP(面向切面编程)为内核的轻量级容器框架。 Spring 使得创建java企业级应用变得容易,提供了在企业环境中使用Java语言所需的一起,可以根据应用程序的需求灵活地创建多种体系结构。 Spring核心 IOC AOP Spring优势 轻量级 声明式事务支持 方便程序测试 方便集成优秀框架 Spring体系结构 程序的耦合和解耦 耦合:程序之间依赖关系 解耦:降低程序间依赖 解决思路: 编译期间不依赖、运行时才依赖 通过配置文件的方式,来获取要使用的对象全限定类型 程序中使用反射机制创建对象,避免使用 new 关键字创建对象 解决思路 工厂模式 解耦: DEMO Spring 的 IOC Spring入门案例 创建maven工程 配置依赖 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency> </dependencies> 创建包目录 创建 Spring 配置文件 ApplicationContext.xml 把对象交给

beanNameAware,applicationContextAware,DisposeableBean在项目中的使用

旧巷老猫 提交于 2020-04-05 16:55:08
https://blog.csdn.net/weixin_30947631/article/details/86584359 前言 今天在项目中使用了研发部对spring框架的扩展的应用,比如,实现消息队列功能的springEven,springListener,以及对上下文的扩展,实现了spring的applicationContextAware,而本节就是根据项目的扩展,综合的分析bean的生命周期,在这里,介绍项目里是先定义了一个service的抽象层,实现了抽象接口baseService层,这个base层实现了自定义的封装了springFramwork的组件。这里有一篇非常详细的文章供读者参考。 Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使用Singleton模式产生单一实例,对单线程的程序说并不会有什么问题,但对于多线程的程序,就必须注意安全(Thread-safe)的议题,防止多个线程同时存取共享资源所引发的数据不同步问题。 然而在spring中 可以设定每次从BeanFactory或ApplicationContext指定别名并取得Bean时都产生一个新的实例:例如:

设计模式-建造者模式JAVA实现

谁说胖子不能爱 提交于 2020-04-04 20:22:24
建造者模式就是 接口规定了要完成的动作(也就是方法),然后有各个实现类针对这些方法分别进行各自具体的实现。 个人理解其与模板模式最主要的区别就是模板模式会有一个以final定义的方法来规定其必须要完成的动作流程,这个流程不允许被其子类所修改。而建造者模式没有这个约束,只要实现接口规定的方法建即可。 也就是说模板模式隐含一个流程性,而建造者模式没有固定的流程性 下边还是仓库拣货为例简单说明建造者模式 仓库拣货时一般是多张出库单同时拣货,那么一般会根据客户的情况有至少两种拣货任务与拣货列表的生成方式。 一个是合并拣货。所有客户(X,Y,Z)要拣的A品一共3箱4盒,那就可能生成两个拣货列表(一个3箱,一个4盒)和一个拣货任务(a人员去同时拣这两个列表指定的SKU) 另一个是分别拣货,所有客户(X,Y,Z)对要拣的A品可能生成了4个拣货列表(X客户1箱,Y客户1箱,Z客户1箱,Z还有4盒)和2个拣货任务(a人员在整货区拣所有的整箱,b人员在散货区拣散盒) 那么在实际生成时就可以先定义一个统一的接口 package builder; import java.util.List; import bean.PickDoc; import bean.PickList; import bean.PickTask; /** 定义要完成的动作 @author mas */ public