构造器

Spring三 Bean的三种创建方式

梦想与她 提交于 2020-02-12 04:21:02
创建Bean的三种方式 在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法。实际上,Spring支持使用以下三种方式来创建Bean: (1)调用构造器创建Bean (2)调用静态工厂方法创建Bean (3)调用实例工厂方法创建Bean 一 构造器创建Bean实例 如果不采用构造注入,Spring底层会调用Bean类的无参数构造器来创建实例,因此该类必须要提供无参数的构造器,并且class属性的值就是该Bean实例的实现类。Spring对Bean实例的所有属性执行默认初始化,即所有基本类型的值初始化为0或false,所有引用类型的值初始化为null。BeanFactory会根据配置文件决定依赖关系,先实例化所依赖的Bean实例,然后为Bean注入依赖关系,最后将一个完整的Bean实例返回给程序。 如果采用构造注入,则使用<constructor-arg>配置一个构造器参数,Spring容器将使用带对应参数的构造器来创建Bean实例,Spring调用构造器传入的参数即可用于初始化Bean的实例变量,最后也将一个完整的Bean实例返回给程序。 二 使用静态工厂方法创建Bean 采用静态工厂方法创建Bean实例时,<bean>元素需要指定两个属性: class:值为静态工厂类的类名

C#教程:关于匿名类型的特性

大城市里の小女人 提交于 2020-02-12 03:24:50
首先让我们看一个例子, 假设我们并没有Person类, 并且我们关心的属性只有Name和Age. 下面的代码演示了我们如何在没有声明类型的情况下来构建一个对象的: 1: var tom = new { Name = Tom, Age = 4 }; 2: var holly = new { Name = Holly, Age = 31 }; 3: var jon = new { Name = Jon, Age = 31 }; 4: Console.WriteLine({0} is {1} years old, jon.Name, jon.Age); 可以看到, 初始化一个匿名类与我们之前提到的对象初始化器非常相似——区别仅仅是在new和开始的大括号之间的类型名称没有了. 我们正在使用隐式的局部变量, 因为这是我们的唯一选择——我们没有任何的类型名可以用于声明该变量. 从上面的最后一行代码你可以看到, 类型用于Name和Age属性, 他们可以被读取并且其值就是在隐式类型初始化器中被赋予的值, 因此, 该输出将会是Jon is 31 years old. 属性将会有与初始化器内的表达式一样的类型——Name是string类型, Age是int类型. 和对象初始化器一样的是, 方法和构造器也可以被用于隐式对象初始化器中, 用于做任何你想做的是事情.

Spring基础

大憨熊 提交于 2020-02-12 00:23:38
一,什么是Spring? 为什么要用Spring? Spring的本质就是管理软件中的对象,如何创建对象和维护对象之间的关系 1.Spring是一个开源的轻量级的应用开发框架,其目的是简化企业级的应用程序开发,减少入侵; 2.Spring 提供的IOC和AOP应用,可以将组件的耦合度降至最低,届解耦,便于系统日后的维护和升级; 二,Spring容器的简介: 1)在Spring中,任何的java类和JavaBean都被当成 Bean处理,这些Bean通过容器管理和应用。 2)Spring容器实现了IOC和AOP机制,这些机制可以简化Bean对象创建和Bean对象之间的解耦; 3)Spring 容器有BeanFactory和ApplicationContext两种类型 什么是JavaBean:一种简单规范的Java对象 何时使用Spring? 当需要管理JavaBean对象时候就可以使用,Spring是最简洁的对象管理方案之一 。 三,Spring容器的实例化,如何创建对象 ApplicationContext继承自BeanFactory接口,拥有更多的企业级方法,推荐使用该类型,实例化方法如下: // 加载文件系统中的配置文件实例化 String conf = "c:\applicationContext.xml"; ApplicationContext ac = new

Java抽象类与接口的区别

别等时光非礼了梦想. 提交于 2020-02-11 11:49:36
抽象类 接口 抽象类与接口区别 1.抽象类    抽象类用abstract来修饰,例如: package com.test.abstractaaa; public abstract class TestAbstract { } 抽象类是用来捕捉子类的通用性的,它不能被实例化,只能用作子类的超类,抽象类是被用来创建继承层级里子类的模板,例如JDK中的GenericServlet类中部分代码: public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable{ public void init(ServletConfig config) throws ServletException {   this.config = config;   this.init(); } public void init() throws ServletException {} public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;    public void destroy() {} }

Java面向对象---继承

£可爱£侵袭症+ 提交于 2020-02-11 10:54:58
继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 生活中的继承: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。 食草动物和食肉动物又是属于动物类。 所以继承需要符合的关系是:is-a,父类更通用,子类更具体。 虽然食草动物和食肉动物都是属于动物,但是两者的属性和行为上有差别,所以子类会具有父类的一般特性也会具有自身的特性。 类的继承格式 在 Java 中通过 extends 关键字可以申明一个类是从另外一个类继承而来的,一般形式如下: 类的继承格式 class 父类 { } class 子类 extends 父类 { } 继承的特性 子类拥有父类非private的属性,方法。 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如A类继承B类,B类继承C类,所以按照关系就是C类是B类的父类,B类是A类的父类,这是java继承区别于C++继承的一个特性。 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系)。 继承关键字 继承可以使用 extends 和

Java自定义异常

独自空忆成欢 提交于 2020-02-10 16:03:19
在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。 1.所有异常都必须是 Throwable 的子类。 2.如果希望写一个检查性异常类,则需要继承 Exception 类。 3.如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。 4.习惯上,自定义异常类应该包含2个构造器:一个是默认的构造器,另一个是带有详细信息的构造器。 可以像下面这样定义自己的异常类: /**IllegalAgeException:非法年龄异常,继承Exception类*/ class IllegalAgeException extends Exception { //默认构造器 public IllegalAgeException() { } //带有详细信息的构造器,信息存储在message中 public IllegalAgeException(String message) { super(message); } } 测试异常: import java.util.Scanner; public class TestSexException { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入您的性别

注入(injector)

浪尽此生 提交于 2020-02-10 04:59:39
在java开发中有时候我们的一个类需要依赖另外一个类,这种就是依赖关系,创建对象的工作一般由spring容器来完成然后注入给调用者,这种就是依赖注入 。 Java依赖注入设计原则允许我们移除硬编码依赖和让我们的应用低耦合,可扩展和可维护。我们可以通过在Java中实现依赖注入将依赖关系从编译时移到运行时来解析。 Java依赖注入似乎很难通过理论来掌握。所以我将通过一些简单的例子,然后我们将会看到如何在应用里使用依赖注入模式来实现低耦合和可扩展性。 一个最好的setter依赖注入的例子是 Struts2 Servlet API Aware interfaces 到底是使用基于构造器依赖注入还是基于setter方法依赖注入取决于你的需求。举个例子,如果没有服务类我的应用完全不能运行,那么我会偏向基于构造器的DI,否则我会选择基于setter方法的DI,只有在真正需要才会使用它。 Java中的依赖注入是一种通过使对象从编译时绑定移到运行时绑定来实现控制反转(Inversion of control IoC)的一种方式。我们可以通过工厂模式(Factory Pattern), 模板方法设计模式(Template Method Design Pattern), 策略模式(Strategy Pattern)还有服务定位模式(Service Locator pattern)来实现IoC。

Mybatis-plus笔记(一)

允我心安 提交于 2020-02-09 13:02:38
Mybatis-plus学习笔记 在Springboot中使用mp并测试 在pom文件中引入如下依赖:(mp依赖和mysq依赖) <!--mybatis-plus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> 基础配置: 在application.yml中配置基本数据连接信息: # DataSource Config spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mp?useSSL=false&serverTimezone=GMT%2B8 username: root password: root # Logger Config logging: level: com.neo: warn

JavaSE学习笔记(6)---异常

一个人想着一个人 提交于 2020-02-08 23:52:24
JavaSE学习笔记(6)---异常 ​ 软件程序在运行过程中,非常可能遇到问题,我们称之为异常,英文是:Exception,意思是例外。遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理的处理,安全的退出,而不至于程序崩溃呢? 1.异常产生的原因及使用原则 在 Java 中一个异常的产生,主要有如下三种原因: Java 内部错误发生异常,Java 虚拟机产生的异常。 编写的程序代码中的错误所产生的异常,例如空指针异常、数组越界异常等。这种异常称为未检査的异常,一般需要在某些类中集中处理这些异常。 通过 throw 语句手动生成的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息。 Java 通过面向对象的方法来处理异常。在一个方法的运行过程中, 如果发生了异常,则这个方法会产生代表该异常的一个对象 ,并把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。 我们把生成异常对象,并把它提交给运行时系统的过程称为 拋出(throw)异常 。运行时系统在方法的调用栈中查找,直到找到能够处理该类型异常的对象,这一个过程称为 捕获(catch)异常 。 Java 异常强制用户考虑程序的强健性和安全性。异常处理不应用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应处理。编写代码处理某个方法可能出现的异常,可遵循如下三个原则:

Java:多线程概述与创建方式

南楼画角 提交于 2020-02-08 20:52:03
目录 Java:多线程概述与创建方式 进程和线程 并发与并行 多线程的优势 线程的创建和启动 继承Thread类 start()和run() 实现Runnable接口 实现Callable接口 创建方式的区别 Java:多线程概述与创建方式 在之前的学习过程中,已经不止一次地提到了并发啊,线程啊,同步异步的内容,但是出于内容的局部一体,之前总是几笔带过,并附上:以后学习的时候再细说。 那么,现在到了细说的时候,在翻阅并参考了介绍Java并发编程的书之后,突然感觉压力有些大,因为有些概念确实比较抽象。所以之后的内容不定长短,但是每天都会试着输出一些。 进程和线程 一个进程可以拥有多个线程,一个线程必须拥有一个父进程。 进程 :当前操作系统正在执行的任务,也是操作系统运行程序的一次执行过程。 线程 :是进程的执行单元,是进程中正在执行的子任务。 就好像我们正在使用的QQ,正在放歌的音乐软件,正在打的游戏,就是一个个的进程。我们在QQ进程中执行的各种操作,就是一个个的线程。 每个Java的应用程序运行的时候其实就是个进程,JVM启动之后,会创建一些进行自身常规管理的线程,如 垃圾回收 和终结管理,和一个 运行main函数的主线程 。 并发与并行 现在大部分的操作系统都是支持多进程并发运行的,就像我们现在正在使用电脑,可以通过任务管理器查查看,会发现有几十个几百个进程在“同时执行”。