spring注入内部类
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于spring注入内部类内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在spring注入内部类相关知识领域提供全面立体的资料补充。同时还包含 safari浏览器、samba、SAMP 的知识内容,欢迎查阅!
spring注入内部类相关知识
-
Spring 注入内部 Beans注入内部 Beans正如你所知道的 Java 内部类是在其他类的范围内被定义的,同理,inner beans 是在其他 bean 的范围内定义的 bean。因此<property />或<constructor-arg />元素中的<bean />元素称为内部bean,如下所示。<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
-
在spring的bean中注入内部类在spring中注入内部类,有可能会遇到如下异常信息:2014-5-14 21:52:45 org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1c56c60: startup date [Wed May 14 21:52:45 CST 2014]; root of context hierarchy 2014-5-14 21:52:45 org.springframework.beans.factory.xml.XmlBeanDefin
-
Spring认证-注入内部 Bean如您所知,Java 内部类是在其他类的范围内定义的,类似地,内部 bean是在另一个 bean 的范围内定义的 bean。因此, 或 元素内的 元素称为内部 bean,如下所示。例子让我们使用 Eclipse IDE 并按照以下步骤创建一个 Spring 应用程序 -这是TextEditor.java文件的内容-以下是另一个依赖类文件SpellChecker.java 的内容-以下是MainApp.java文件的内容-以下是配置文件Beans.xml,它具有基于 setter 的注入的配置,但使用内部 bean -完成源文件和 bean 配置文件的创建后,让我们运行应用程序。如果您的应用程序一切正常,它将打印以下消息 -
-
最详细的 Spring IOC 注入 (xml 注入 + 注解注入)@[toc](Spring IOC 容器的基本使用) 一、为什么要使用 Spring? 1.1 传统的 MVC 架构的程序 1.2 程序耦合性过高? 1.3 如何解耦? 1.4 Spring IOC 的依赖注入 二、Spring IOC 的依赖注入 2.1 使用构造函数完成依赖注入 2.1.1 标签的使用讲解 2.1.2 构造函数依赖注入的优缺点 2.1.3 使用构造函数完成依赖注入的实例 2.2 使用 setter 完成注入 2.2.1 使用 setter 完成依赖注入的功能 2.2.2 基于 setter 完成依赖注入的分析 2.3 复杂数据类型注入 2.3.1
spring注入内部类相关课程
spring注入内部类相关教程
- Java 内部类 本节我们将介绍 Java 中的内部类。通过本节的学习,我们将了解到什么是内部类,内部类的分类和作用。在内部类的分类部分,我们将逐一学习各个类型的内部类如何定义,如何实例化以及各自的特点,要注意区分不同类型内部类的异同。有了这些基础知识之后,我们也会结合示例介绍为什么需要内部类。
- 2.1 成员内部类 2.1.1 定义成员内部类也称为普通内部类,它是最常见的内部类。可以将其看作外部类的一个成员。在成员内部类中无法声明静态成员。如下代码中声明了一个成员内部类:// 外部类 Carpublic class Car { // 内部类 Engine private class Engine { private void run() { System.out.println("发动机启动了!"); } }}我们在外部类 Car 的内部定义了一个成员内部类 Engine,在 Engine 下面有一个 run() 方法,其功能是打印输出一行字符串:“发动机启动了!”。另外,需要注意的是,与普通的 Java 类不同,含有内部类的类被编译器编译后,会生成两个独立的字节码文件:Car$Engine.classCar.class内部类 Engine 会另外生成一个字节码文件,其文件名为:外部类类名 $ 内部类类名.class。2.1.2 实例化内部类在外部使用时,无法直接实例化,需要借助外部类才能完成实例化操作。关于成员内部类的实例化,有 3 种方法:我们可以通过 new 外部类().new 内部类() 的方式获取内部类的实例对象:715运行结果:发动机启动了!我们可通过先实例化外部类、再实例化内部类的方法获取内部类的对象实例:public static void main(String[] args) { // 1.实例化外部类 Car car = new Car(); // 2.通过外部类实例对象再实例化内部类 Engine engine = car.new Engine(); // 3.调用内部类的方法 engine.run();}编译执行,成功调用了内部类的 run () 方法:$javac Car.javajava Car发动机启动了!我们也可以在外部类中定义一个获取内部类的方法 getEngine(),然后通过外部类的实例对象调用这个方法来获取内部类的实例:716运行结果:发动机启动了!这种设计在是非常常见的,同样可以成功调用执行 run() 方法。2.1.2 成员的访问成员内部类可以直接访问外部类的成员,例如,可以在内部类的中访问外部类的成员属性:717观察 Engine 的 run() 方法,调用了外部类的成员属性 name,我们在主方法实例化 Car 后,已经为属性 name 赋值。运行结果:大奔奔的发动机启动了!相同的,除了成员属性,成员方法也可以自由访问。这里不再赘述。还存在一个同名成员的问题:如果内部类中也存在一个同名成员,那么优先访问内部类的成员。可理解为就近原则。这种情况下如果依然希望访问外部类的属性,可以使用外部类名.this.成员的方式,例如:718运行结果:Engine中的成员属性name=引擎大奔奔的发动机启动了!大奔奔跑起来了!请观察内部类 run() 方法中的语句:第一行语句调用了内部类自己的属性 name,而第二行调用了外部类 Car 的属性 name,第三行调用了外部类的方法 run(),并将外部类的属性 name 作为方法的参数。
- 2.3 方法内部类 2.3.1 定义方法内部类,是定义在方法中的内部类,也称局部内部类。如下是方法内部类的代码:720运行结果:方法内部类的run()方法发动机启动了如果我们想调用方法内部类的 run() 方法,必须在方法内对 Engine 类进行实例化,再去调用其 run() 方法,然后通过外部类调用自身方法的方式让内部类方法执行。2.3.2 特点与局部变量相同,局部内部类也有以下特点:方法内定义的局部内部类只能在方法内部使用;方法内不能定义静态成员;不能使用访问修饰符。也就是说,Car2.getEngine() 方法中的 Engine 内部类只能在其方法内部使用;并且不能出现 static 关键字;也不能出现任何的访问修饰符,例如把方法内部类 Engine 声明为 public 是不合法的。
- 2.4 匿名内部类 2.4.1 定义匿名内部类就是没有名字的内部类。使用匿名内部类,通常令其实现一个抽象类或接口。请阅读如下代码:721运行结果:汽车跑飞机飞上述代码中的抽象父类中有一个方法 run(),其子类必须实现,我们使用匿名内部类的方式将子类的定义和对象的实例化放到了一起,通过观察我们可以看出,代码中定义了两个匿名内部类,并且分别进行了对象的实例化,分别为 car 和 airPlain,然后成功调用了其实现的成员方法 run()。2.4.2 特点含有匿名内部类的类被编译之后,匿名内部类会单独生成一个字节码文件,文件名的命名方式为:外部类名称$数字.class。例如,我们将上面含有两个匿名内部类的 Transport.java 编译,目录下将会生成三个字节码文件:Transport$1.classTransport$2.classTransport.class匿名内部类没有类型名称和实例对象名称;匿名内部类可以继承父类也可以实现接口,但二者不可兼得;匿名内部类无法使用访问修饰符、static、abstract 关键字修饰;匿名内部类无法编写构造方法,因为它没有类名;匿名内部类中不能出现静态成员。2.4.2 使用场景由于匿名内部类没有名称,类的定义可实例化都放到了一起,这样可以简化代码的编写,但同时也让代码变得不易阅读。当我们在代码中只用到类的一个实例、方法只调用一次,可以使用匿名内部类。
- 1. 内部类和嵌套类 我们都知道在 Java 中表示内部类实际上就是将内部类嵌套在外部类中就声明了一个内部类,那么内部类就能访问外部类私有成员。//PageAdapterpublic abstract class PageAdapter { public abstract int getCount(); public abstract String getItem(int position);}//PageTestpackage com.imooc.test;import java.util.Arrays;import java.util.List;public class PageTest { private List<String> mData = Arrays.asList("1", "2", "3"); class TestPageAdapter extends PageAdapter {//在Java中只需要把内部类TestPageAdapter声明在外部类PageTest内部即可 @Override public int getCount() { return mData.size();//内部类即可以访问外部私有成员 } @Override public String getItem(int position) { return mData.get(position); } }}然而在 Kotlin 中不是这样的,对于 Kotlin 中在一个类内部再声明一个类我们把它称为嵌套类,嵌套类是不能直接访问外部类的私有成员的。package com.imooc.testclass PageTestKt { private val mData = listOf<String>("1", "2", "3") class TestPageAdapter : PageAdapter() { override fun getItem(position: Int): String { return mData[position]//由于无法访问mData,所以mData[position]编译报错 } override fun getCount(): Int { return mData.size//由于无法访问mData,所以mData.size编译报错 } }为什么 Kotlin 嵌套类不能直接访问外部类私有成员,我们可以把它反编译成 Java 代码就一目了然了:public final class PageTestKt { private final List mData = CollectionsKt.listOf(new String[]{"1", "2", "3"}); public static final class TestPageAdapter extends PageAdapter {//可以看到实际上Kotlin嵌套类就是一个static静态类,所以它肯定不能访问外部类PageTestKt私有成员mData @NotNull public String getItem(int position) { return ""; } public int getCount() { return 0; } }}可以看到实际上 Kotlin 嵌套类就是一个 static 静态类,所以它肯定不能访问外部类 PageTestKt 私有成员 mData。如果要在 Kotlin 声明一个内部类,应该怎么做呢?很简单只需要在嵌套类基础上加上一个 inner 关键字声明即可。package com.imooc.testclass PageTestKt { private val mData = listOf<String>("1", "2", "3") inner class TestPageAdapter : PageAdapter() {//inner关键字声明一个Kotlin中的内部类 override fun getItem(position: Int): String { return mData[position]//由于TestPageAdapter是PageTestKt的内部类,那么它就可以直接访问外部类私有属性mData } override fun getCount(): Int { return mData.size } }}为了进一步验证 inner class 实际上就是对应 Java 中的内部类,我们可以上述代码反编译成 Java 代码验证下:public final class PageTestKt { private final List mData = CollectionsKt.listOf(new String[]{"1", "2", "3"}); public final class TestPageAdapter extends PageAdapter {//可以看到TestPageAdapter确实是PageTestKt内部类,所以能直接访问外部类的私有成员mData @NotNull public String getItem(int position) { return (String)PageTestKt.this.mData.get(position); } public int getCount() { return PageTestKt.this.mData.size(); } }}总结一下:声明嵌套类时,在 Java 中是在外部类内部使用 static class A , 而在 Kotlin 中只需要在外部类内部使用 class A 即可;声明内部时,在 Java 中只需要在外部类内部使用 class A , 而在 Kotlin 中则需要在外部类内部使用 inner class A 。类 A 在类 B 内部声明在 Java 中在 Kotlin 中嵌套类 (不能直接访问外部类私有属性)static class Aclass A 内部类 (能直接访问外部类私有属性)class Ainner class A
- 2.2 静态内部类 2.2.1 定义静态内部类也称为嵌套类,是使用 static 关键字修饰的内部类。如下代码中定义了一个静态内部类:public class Car1 { // 静态内部类 static class Engine { public void run() { System.out.println("我是静态内部类的run()方法"); System.out.println("发动机启动了"); } }}2.2.2 实例化静态内部类的实例化,可以不依赖外部类的对象直接创建。我们在主方法中可以这样写:// 直接创建静态内部类对象Engine engine = new Engine();// 调用对象下run()方法engine.run();运行结果:我是静态内部类的run()方法发动机启动2.2.2 成员的访问在静态内部类中,只能直接访问外部类的静态成员。例如:719在 run() 方法中,打印的 name 属性就是外部类中所定义的静态属性 name。编译执行,将会输出:外部类的静态属性name对于内外部类存在同名属性的问题,同样遵循就近原则。这种情况下依然希望调用外部类的静态成员,可以使用外部类名.静态成员的方式来进行调用。这里不再一一举例。如果想要访问外部类的非静态属性,可以通过对象的方式调用,例如在 run() 方法中调用 Car1 的实例属性 brand:public void run() { // 实例化对象 Car1 car1 = new Car1(); System.out.println(car1.brand);}
spring注入内部类相关搜索
-
s line
safari浏览器
samba
SAMP
samplerate
sandbox
sanitize
saper
sas
sass
save
smarty模板
smil
smtp
snapshot
snd
snmptrap
soap
soapclient
soap协议