构造器

spring bean生命周期

梦想的初衷 提交于 2019-12-06 17:53:55
Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。 转载请注明地址 http://www.cnblogs.com/zrtqsk/p/3735273.html,谢谢。 一、生命周期流程图:   Spring Bean的完整生命周期从创建Spring容器开始,直到最终Spring容器销毁Bean,这其中包含了一系列关键点。   若容器注册了以上各种接口,程序那么将会按照以上的流程进行。下面将仔细讲解各接口作用。 二、各种接口方法分类 Bean的完整生命周期经历了各种方法调用,这些方法可以划分为以下几类: 1、Bean自身的方法  :  这个包括了Bean本身调用的方法和通过配置文件中<bean>的init-method和destroy-method指定的方法 2、Bean级生命周期接口方法  :  这个包括了BeanNameAware、BeanFactoryAware、InitializingBean和DiposableBean这些接口的方法 3、容器级生命周期接口方法  : 

jvm(九):类加载机制

一世执手 提交于 2019-12-06 16:51:07
当 Java 虚拟机将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析、运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制。JVM 虚拟机执行 class 字节码的过程可以分为七个阶段: 加载、验证、准备、解析、初始化、使用、卸载。 在开始聊之前,先给大家看一道面试题。 class Grandpa { static { System.out.println("爷爷在静态代码块"); } } class Father extends Grandpa { static { System.out.println("爸爸在静态代码块"); } public static int factor = 25; public Father() { System.out.println("我是爸爸~"); } } class Son extends Father { static { System.out.println("儿子在静态代码块"); } public Son() { System.out.println("我是儿子~"); } } public class InitializationDemo { public static void main(String[] args) { System.out.println("爸爸的岁数:" + Son

类型信息

↘锁芯ラ 提交于 2019-12-06 15:24:08
编译前 - 强制 运行时 - 反射 // typeinfo/Shapes.java import java.util.stream.*; abstract class Shape { void draw() { System.out.println(this + ".draw()"); } @Override public abstract String toString(); } class Circle extends Shape { @Override public String toString() { return "Circle"; } } class Square extends Shape { @Override public String toString() { return "Square"; } } class Triangle extends Shape { @Override public String toString() { return "Triangle"; } } public class Shapes { public static void main(String[] args) { Stream.of( new Circle(), new Square(), new Triangle()) .forEach(Shape::draw); }

JavaSE面向对象-封装

五迷三道 提交于 2019-12-06 12:56:09
一.面向对象的三大特性 说起Java的面向对象,大家想到的都应该是面向对象的三大特征,封装,继承,多态,这里就总结一下面向对象的封装一些知识. 1.封装的概念: 面向对象是一个抽象的,个人认为是对类的一个提升,提取和抽象化,而一些东西你提取了之后,又不想让别人随意的更改,那么你就需要对这个信息就行隐藏,那么这个时候就需要封装。 封装的好处: 1.提高安全性,把不必要的信息隐藏 2.加强对成员属性的控制,提高易用性 3.代码更加的简洁,提高代码的复用性和可读性 因为有封装问题,所以会有一些权限修饰符,在Java中现在就我们涉及的权限修饰符不是很多,有以下几个: public --->公开的,权限最大的修饰符。 protected ---->受保护的,子类和本类,如果是在另外一个包中的子类,也可以使用protected修饰的父类内容 default ---->默认权限,包中有效 private ---->私有化权限,只能在本类使用 上面几个权限修饰符,修饰类,方法和属性。 get和set方法 在封装的时候,在封装一些信息的时候,对属性进行了private修饰,所以不能够直接去访问,这时候我们就需要提供一个接口来对外提供一个入口,就会用到get和set方法: set //获得值 比如说: private int age; // get public void set age (){

深入理解static关键字

白昼怎懂夜的黑 提交于 2019-12-06 12:35:52
在开始讲static之前,我想让各位看一段有意思的代码: public class Test { static{ System.out.println("test static 1"); } static{ System.out.println("test static 2"); } public static void main(String[] args) { } } 看完程序,小白童鞋发话了:啥玩意?main方法中啥都没有,能运行啥?博主你个星星星... 运行结果: test static 1 test static 2 小白童鞋:那啥...那啥...博主我说啥了,我啥都没说... 其实,上面的代码懂的自然懂,不懂的自然就不懂了,因为上面的代码涉及到JVM的类加载了!当然不在本篇博客文章的范畴内,如果有兴趣理解上面的程序,这篇文章可能会对你有所帮助 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】 1、static存在的主要意义 static的主要意义是在于创建独立于具体对象的域变量或者方法。 以致于即使没有创建对象,也能使用属性和调用方法 ! static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能 。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候

Java内部类详解

感情迁移 提交于 2019-12-06 10:26:51
内部类特点 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问 该类 。 内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成 员之间可以互相访问。但外部类不能访问内部类的实现细节 ,例如内部类的成员变量 。 匿名内部类适合用于创建那些仅需要一次使用的类 内部类与外部类的区别 内部类比外部类可以多使用三个修饰符: private 、 protected 、 static ,外部类不可以使用 这三个 修饰符 。 非静态内部类不能拥有静态成员。 非静态内部类 内部类一定是放在另一个类的类体部分 (也就是类名后的花括号部分) 定义 在非静态内部类里可以直接访问外部类的 private 成员 非静态内部类不能拥有静态成员 静态内部类的成员只在非静态内部类范围内是可知的,并不能被外部类直接使用。如果外部类需要访问非静态内部类的成员,则必须显式创建非静态内部类对象来调用访问其实例成员 不允许在外部类的静态成员中直接使用非静态内部类 外部类和非静态内部类的成员调用 当内部类的方法调用变量时, 首先在该方法中查找该变量名的局部变量 在内部类中查找该变量名的成员变量 在内部类所在的外部类中查询该变量名的成员变量 如果没有查找到则编译错误 如果内部类方法中的局部变量、内部类成员变量、外部类成员变量的名字相同,则可通过使用 this

idea 常用插件

六眼飞鱼酱① 提交于 2019-12-06 10:15:36
首先说一下idea引入外部插件的方式: 1.打开settings配置面板 2.选择plugins--》install pluginfrom disk 选择相应插件包==》点击ok 最后,“ Restart ” 重启idea 让它加载一下新加入的插件!!! 常用插件: 下面的所有插件都使用上面外部引用方式集成相应的插件包即可 1. FindBugs-IDEA 作用: 检测代码中可能的bug及不规范的位置, 写完代码后检测下 避免低级bug, 静态分析工具承诺无需开发人员费劲就能找出代码中已有的缺陷。当然,如果有多年的编写经验,就会知道这些承诺并不是一定能兑现。 插件提供地址: https://plugins.jetbrains.com/plugin/3847-findbugs-idea 成功标志: 重启idea后如果插件加载成功左下角出现: 实际应用: 扫描完成后: 附录(网摘): FindBugs 它用来查找Java代码中存在的bug。它使用静态分析方法标识出Java程序中上百种潜在的不同类型的错误。 FindBugs支持对包级别、项目级别、模块级别、单个文件级别,以及自定义范围的Bug分析。 FindBugs:特色是能够检查出空指针异常这种bug! 使用:右键单击(module、单个文件等)--->在快捷菜单中选择findbugs即可 附:FindBugs的Bug种类说明 Bad

javabean的理解

吃可爱长大的小学妹 提交于 2019-12-06 08:00:40
javaBean 编辑 本词条由 “科普中国”科学百科词条编写与应用工作项目 审核 。 JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的 构造器 。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。 中文名 Javabean 外文名 Javabean 类 别 Java组件 模 型 软件组件模型 目录 1 概述 2 功能特点 3 组成 4 特征 5 优点 6 开发环境 ▪ 设计环境 ▪ 运行环境 概述 编辑 JavaBean是一种可重用的Java组件,它可以被Applet、Servlet、SP等Java应用程序调用.也可以可视化地被Java开发工具使用。它包含属性(Properties)、方法(Methods)、事件(Events)等特性。 JavaBean是一种软件组件模型,就跟ActiveX控件一样,它们提供已知的功能,可以轻松重用并集成到应用程序中的java类。任何可以用Java代码创造的对象都可以利用JavaBean进行封装。通过合理的组织具有不同功能的JavaBean,可以快速的生成一个全新的应用程序,如果将这个应用程序比作一辆汽车

面向对象基础

北战南征 提交于 2019-12-06 07:12:32
1. 三大特征 1.1 封装 1.2 继承(extends) 1.2.1 父类 1.2.2 子类 1.子类在同一个包下面能够范文父类除了私有private修饰的所有属性和方法 2.在不同包下面,子类对象只能访问public修饰的属性和方法 3.在子类内部,如果不同包的情况下,可以访问protected修饰的属性和方法,但是不能访问默认的访问修饰符修饰的属性和方法 4.子类在初始化的时候会先调用父类的默认不带参数构造器,如果没有,就会报错,我们只有人为的修改 (1).将父类添加一个无参数的构造器 (2).在子类构造器中手动使用super()声明调用哪个父类的构造器 1.3 多态 2. 类 2.1属性,成员变量,全局变量 当对象初始化之后,成员变量就会有初始值 String null 整型 0 浮点型 0.0 boolean false char (char)0 局部变量 1.定义的位置不一样 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都可以通用。 3.默认值不一样 局部变量:没有默认值,如果想要使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则和数组一样 4.内存的位置不一样 局部变量:位于栈内存 成员变量,位于堆内存。 5.生命周期不一样 局部变量

面向对象

岁酱吖の 提交于 2019-12-06 07:07:05
1.面向对象 面向对象的基本概念: 抽象(abstract): 从事物中舍弃个别的非本质特征,抽取共同的本质特征 只考虑与问题域相关的信息,而忽略与问题域不相关的部分 对象(object):是系统中用来描述客观事物的一个实体。 可以是有形的,也可以是无形的 具有自己的静态结构(属性)和动态行为(方法) 每个对象有自己的唯一名 2.面向对象的类 类(class): 类是一组具有相同属性和行为的对象的抽象,类的作用是用来创建对象,对象是类的一个实例 类和对象的关系 抽象和具体的关系。 每一个类在某一时刻都有零个或更多的实例,类是生成对象的模板 一个类定义了使用哪些数据来描述属性,每一个对象都有相应的属性值数据,一个类通过一系列方法来定义行为,这些方法能在每个对象中被激活 3.面向对象的特征 封装(encapsulation): 所谓封装是把对象的属性和行为结合在一个独立的系统单位内部 尽可能隐蔽对象的内部细节,只向外部提供接口 降低对象间的耦合度 多态(polymorphism): 指同一个命名可具有不同的语义 JavaOO方法中,常指在一般类中定义的属性或方法被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为,对于子类,可用不同的方法替代实现父类的服务的方法 继承(inheritance): 也称泛化,继承性是子类自动共享父类属性和方法的机制,在定义和实现一个类的时候