构造器

[Java] jackson注解

耗尽温柔 提交于 2019-12-31 23:53:55
Jackson(http://jackson.codehaus.org)库是基于java语言的开源json格式解析工具。相对于javajson解析的其他库,诸如json-lib、gson包,Jackson具有以下优点: 功能全面,提供多种模式的json解析方式,“对象绑定”使用方便,利用注解包能为我们开发提供很多便利。 性能较高,“流模式”的解析效率超过绝大多数类似的json包。 jackson主要的包 jackson-core——核心包(必须),提供基于“流模式”解析的API。核心包:JsonPaser(json流读取),JsonGenerator(json流输出)。 jackson-databind——数据绑定包(可选),提供基于“对象绑定”和“树模型”相关API。数据绑定包:ObjectMapper(构建树模式和对象绑定模式),JsonNode(树节点)。 jackson-annotations——注解包(可选),提供注解功能。 jackson-datatype-joda-2.1.5.jar——日期转换 Jackson注解 1. 重命名属性,忽略属性,以及修改属性所使用的类型。 ① 属性重命名时使用的注解 最常见的使用方式之一就是改变某个成员属性所使用的JSON名称。例如: class Name { @JsonProperty("firstName") public

对C#构造器的理解

六眼飞鱼酱① 提交于 2019-12-31 23:00:03
【前置知识】 对C#中用new关键字实例化对象的理解 【构造器的作用】 在实例化对象时需要给一些必要的初始数据(即对象初始化),构造器决定了哪些数据是必要的,而我们可以通过构造器来给这些数据赋值,而不使用其默认的值。 注解: 对象需要哪些数据本质上是我们决定的,因为类是我们写出来的,而在C#中要对象创建出来时,对象需要的数据要通过构造器来知道,所以可以说构造器决定了对象需要哪些数据。这是不同层面的说法。 可以使用默认值时,相当于类中有无参构造器,所以我们可以不用输入参数(即数据),如果都是有参构造器,那么我们必须要输入参数,否则就会报错,这也保证了我们在初始化对象时进行了赋值。 【构造器的声明】 构造器也是一个特殊的方法,其特殊之处在于: 无返回类型 构造器名与类名完全相同 (注解:说法上,构造器名=方法名,构造器=构造方法=构造函数。类中有很多方法,在调用构造器时,怎么知道哪一个方法是构造方法呢?方法名与类名完全相同的那个方法就是构造方法,即构造器。) 【默认构造器】 类中必须有构造器才能实例化对象: 如果我们没有为类写构造器,那么C#编译器会自动为类添加一个构造器——默认构造器,其没有参数,是无参构造器。 如果我们为类写了构造器,那么就没有默认构造器 【构造器重载】 同方法重载类似,多个构造器之间参数的类型和数量要有区别 【实例说明】 class Employee {

lombok

久未见 提交于 2019-12-30 02:47:31
一、lombok的使用 1.1 lombok环境搭建 添加依赖 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> <scope>provided</scope> </dependency> idea下载lombok插件 setting–>plugins–>lombok 1.2 简介 lombok提供了一些注解,可以简化java代码的编写,比如平常使用的get,set方法,构造函数,hashcode,equals方法等,都可以使用其提供的注解,帮助我们自动生成。 二、lombok中常用的注解 2.1 @Data @Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。 2.2 @Getter/@Setter 注解在属性上,可以为相应的属性自动生成Getter/Setter方法。 2.3 @NonNull 该注解用在属性或构造器上

秒懂C#通过Emit动态生成代码

北慕城南 提交于 2019-12-30 02:21:37
首先需要声明一个程序集名称, 1 // specify a new assembly name 2 var assemblyName = new AssemblyName("Kitty"); 从当前应用程序域获取程序集构造器, 1 // create assembly builder 2 var assemblyBuilder = AppDomain.CurrentDomain 3 .DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); 有几种动态程序集构造访问限制: AssemblyBuilderAccess.Run; 表示程序集可被执行,但不能被保存。   AssemblyBuilderAccess.Save; 表示程序集可被保存,但不能被执行。   AssemblyBuilderAccess.RunAndSave; 表示程序集可被保存并能被执行。 AssemblyBuilderAccess.ReflectionOnly; 表示程序集只能用于反射上下文环境中,不能被执行。  AssemblyBuilderAccess.RunAndCollect; 表示程序集可以被卸载并且内存会被回收。 在程序集中构造动态模块, 1 // create module builder 2 var

Spring IOC知识详解

北城余情 提交于 2019-12-29 21:47:16
SpringIOC 文章目录 SpringIOC 一、Spring概念 二、 Spring核心源码架构 1、核心容器: 2、Spring-AOP(面向切面编程): 3、Spring Data Access(数据访问): 4、Web模块 5、单元测试 三、Spring框架环境搭建 四、SpringIOC配置文件加载 1、编写三个xml配置文件 dao.xml: service.xml: controller.xml: 测试类: 五、SpringIOC Bean对象实例化 1、构造器的方式实例化bean对象 2、静态工厂方法方式实例化bean 3、实例化工厂方式创建bean 4、Spring三种实例化bean的方式比较 六、Spring IOC Bean对象依赖注入 1、Spring IOC对象注入四种方式: ①set 注入: xml配置: java类: 基本数据类型set注入: ②构造器注入: xml配置: Java类提供构造函数: 构造器注入字符串值: ③静态工厂注入: 静态工厂类: ④实例化工厂注入 : 2、Spring IOC集合类型属性注入 List集合注入: Ser集合注入: Map集合注入: properties 属性注入: 3、注解方式注入bean 实现步骤: 常用注入注解类型 七、Bean的作用域和生命周期 1、Bean的作用域 Singleton(单例):

控制反转(Ioc)和依赖注入(DI)

为君一笑 提交于 2019-12-29 14:45:21
控制反转IOC, 全称 “Inversion of Control”。依赖注入DI, 全称 “Dependency Injection”。 一个简单的场景:  当一个类的实例需要另一个类的实例协助时,在传统的程序设计过程中,通常有调用者来创建被调用者的实例, 并使用。 面向的问题: 软件开发中,为了降低模块间、类间的耦合度,提倡基于接口的开发,那么在实现中必须面临最终是有“谁”提供实体类的问题。(将各层的对象以松耦合的方式组织起来,各层对象的调用面向接口。) 理解将组件的配置和使用分离: 如果觉得这句话比较抽象, 可以将" 组件 "理解为" 对象 "(底层组件),那么相应的“ 组件的配置 ”就可以理解成为“对象的初始化”, 再来理解这句话,就是将对象的创建和使用分离. 其优点很冥想, 将对象的创建延迟到部署阶段(这句话也可能不太好理解), 就是说对象的创建全部依赖于统一的配置(声明), 这样我们就可以通过修改配置动态地把我们期望使用的类替换成我们打算使用的类,而不修改任何使用对象的原有代码. 原则上,我们需要把对象的装配(配置/声明)和业务代码(使用)分离开来.  软件系统中的依赖(耦合): 在采用面向对象设计的软件系统中,万物皆对象,所有的对象通过彼此的合作,完成整个系统的工作.就好比下面的齿轮,每个齿轮转动才能保证整个齿轮系统的运转.但是这样的设计就意味着强依赖,强耦合.

亚博体育什么是Ioc容器?

有些话、适合烂在心里 提交于 2019-12-29 00:00:52
亚博体育yb9461分析道: 2.1.Ioc容器 BeanFactory: Spring最底层的接口,只提供了的IoC功能,负责创建、组装、管理bean;使用了懒加载,getBean时候才会初始化Bean; ApplicationContext接口:继承了BeanFactory,除此之外还提供AOP集成、国际化处理、事件传播、统一资源加载等功能;在初始化容器的时候就会初始化Bean; 1.1.bean实例化方式(需要使用@Autowired注解来声明) 构造器实例化(无参数构造器); 静态工厂方法实例化:解决系统遗留问题; 实例工厂方法实例化:解决系统遗留问题; 实现FactoryBean接口实例化; ps:都需要在xml文件里进行设置; 1.2.bean作用域 singlecon:单例,在Spcing IoC容器中仅存在一个bean实例(默认的scope); prototype:多例,每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行new XxxBean(): 会在容器启时创建对象; request:用于web开发,将Bean加入request范围,request.setAttribute("xxx"),在同一个reques获得同一个Bean; session:用于web开发, 将Bean放入Session范围

Spring Boot 2.x(五):整合Mybatis-Plus

最后都变了- 提交于 2019-12-28 19:45:27
简介 Mybatis-Plus是在Mybatis的基础上,国人开发的一款持久层框架。 并且荣获了2018年度开源中国最受欢迎的中国软件TOP5 同样以简化开发为宗旨的 Spring Boot 与 Mybatis-Plus 放在一起会产生什么样的化学反应呢?下面我们来领略一下两者配合带来的效率上的提升。 Mybatis-Plus的作用 可以看到,它给我们提供了一些核心的功能:代码生成器和现成的CRUD接口以及可以结合 Lambda 的条件构造器使我们的代码变得足够优雅,分页的使用也是相当的方便,以及提供了不同的主键生成策略。 如果这些功能不能满足我们的需求, Mybatis-Plus 还提供了丰富的插件供我们去使用,我们接下来只讲核心功能,插件的使用会在后面的文章中进行部分的讲解,感兴趣的同学可以先去看一下 官方的文档 。 使用第一步:引入POM 首先我们需要引入POM,我在这里引用的是最新版本的: 接着,如果我们需要使用代码生成器,需要引入模板引擎的依赖: 到此,pom的引入就告一段落,下面我们来看一下配置文件的编写: 使用第二步:编写配置文件 这里我们使用的是 application.yml 作为配置文件,而非新建 Spring Boot 项目默认的 application.properties ,这里如果不会新建一个 Spring Boot 项目,可以去参考本系列教程的

Java 类加载机制详解

爷,独闯天下 提交于 2019-12-28 18:58:40
引子 Java 虚拟机的启动是通过引导类加载器 ( Bootstrap Class Loader ) 创建一个初始类 (Initial Class ) 来完成,这个类是由虚拟机的具体实现指定。紧接着,Java虚拟机链接这个初始类,初始化并调用它的 public void main(String[])方法。之后的整个执行过程都是由对此方法的调用开始。执行 main 方法中的 Java 虚拟机指令可能会导致 Java 虚拟机链接另外的一些类或接口,也可能会调用另外的方法。 可能在某种 Java 虚拟机的实现上,初始类会作为命令行参数被提供给虚拟机。当然,虚拟机实现也可以利用一个初始类让类加载器依次加载整个应用。初始类当然也可以选择组合上述的方式来工作。                                       —— 以上内容摘自《Java 虚拟机规范》(Java SE 7 版) 在讲类的加载机制前,先来看一道题目: public class ClassLoaderTest { public static void main(String[] args) { System.out.println( "爸爸的岁数:" + Son.factor); //入口1 // new Son(); //入口 2 } } class Grandpa { static { System

Java反射机制浅析

落爺英雄遲暮 提交于 2019-12-27 23:35:24
概念   Java反射机制是在 运行状态 中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。   Class 类与java.lang.reflect类库一起对反射的概念进行了支持,该类库包含了 Field 、 Method 以及 Constructor 类(每个类都实现了 Member 接口)。这些类型的对象是由 JVM 在运行时创建的,用以表示未知类里对应的成员。这样开发人员就可以使用 Constructor 创建新的对象,用 get() 和 set() 方法读取和修改与 Field 对象关联的字段,用 invoke() 方法调用与 Method 对象关联的方法。另外,还可以调用 getFields() 、 getMethods() 、 getConstructors() 等很便利的方法,以返回表示字段、方法以及构造器的对象的数组。这样,匿名对象的类信息就能在运行时被完全确认下来,而在编译时不需要知道任何事情。 Class   类是程序的一部分,每个类都有一个 Class 对象。换言之,每当编写并且编译一个新类,就会产生一个 Class 对象(更恰当地说,是被保存在一个同名的 .class 文件中),它包含了与类有关的信息。为了生成这个类的对象