首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Controller中的请求,private和public有什么区别?

Controller 中的请求方法,通常我们都是 public 的,如果是 private 的、protected 的行不行,为什么?...后来一个同事比较认真,第二天早上测试后发现报错了,给我反馈说 private 方法的内部注入的 service 为 null,修改成 public 后就不会为 null。为什么会产生这个问题呢?...会不会是切点注解中的修饰符匹配不到呢?将切点中的修饰符从 public 修改成 private。...其本质是:调用某个类的方法时,实际上是先为该类生成一个子类,然后再在子类中通过反射等,达到方法拦截的目的。...对于子类,其父类中,private修饰的方法,子类如果与父类不在同一包下,是没有访问的权限的,此场景下,cglib 生成的子类,不会和父类在同一包下,也就是private修饰的方法,不能进行动态代理,所以会报空指针异常

1.8K20

大数据技术之_16_Scala学习_05_面向对象编程-中级

(包中有包),这个在前面的第三种打包方式已经讲过了,在使用第三种方式时的好处是:程序员可以在同一个文件中,将类(class/object)、trait 创建在不同的包中,这样就非常灵活了。...在底层这个包对象会生成两个.class文件 package.class 和 package$.class。 7.1.9 包对象的注意事项   1、每个包都可以有一个包对象。你需要在父包中定义它。...当调用对象方法的时候,该方法会和该对象的内存地址绑定。         // 2. 当调用对象属性时,没有动态绑定机制,哪里声明,那里使用。         ...但是有一种情况:当动态实现抽象类的所有抽象方法时,抽象类也就被实例化了。本质是该抽象类的匿名子类实现了该抽象类。     ...,将 Java 哈希映射(Java 中的 HashMap)中的所有元素拷贝到 Scala 哈希映射(Scala 中的 HashMap)。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Scala 基础 (五):面向对象(上篇)

    三、面向对象三大特性 封装 继承 多态 ---- Scala 的面向对象思想和 Java 的面向对象思想和概念是一致的,但是对应的语法有所不同。...一、Scala中的包管理 基本语法 package + 包名 包管理的作用 区分相同名字的类 当类很多时,可以很好的管理类 控制访问范围 ---- 包的命名 命名规则:只能包含数字、字母、下划线、小圆点...: 一个源文件中可以声明多个 package 子包中的类可以直接访问父包中的内容,而无需导包 包对象 定义包对象: package object 包名{ // 代码块 } Scala 中可以为每个包定义一个同名的包对象...一个.java文件 有一个 public 类。 Scala中没有 public关键字,默认就是公共的,一个.scala 中可以写多个类。声明类时不能加public,会报错。类名不要求和文件名一致。...Scala 中的属性和方法都是动态绑定的。 Scala中属性也可以被重写,使用override关键字。

    31920

    scala(八) 面向对象

    Scala包 基本语法: package 包名 Scala包的三大作用(和Java一样) 1.区分相同名字的类 2.当类很多时,可以很好的管理类 3.控制访问范围 包的命名 命名规则 只能包含数字...便于管理 便于区分同名包 java中包的用法 导包 语法: import 包.*/ import 包.类名 位置: 必须处于java源文件中,声明包(package)之后,类(class)...之前 声明包 scala中包的用法 导包 位置:可以导入到任何位置中 声明包下: import java.util._ object Demo07 {} object中: object Demo07...包对象中,定义的非private属性与方法在当前包下,任何位置都可以访问。 包与权限 语法: private [包名] 代表修饰的属性或方法,只能在指定包中使用。...} 类型自定推断;当对属性名设置了默认值时,可以不用指定属性对应的类型,可以自动推断出该属性的类型 class Person{ private var name="张三" val age=18

    34010

    3小时Scala入门

    三,导入包package Scala有以下一些常见的导入package的方式 1,引入全部对象 (import scala.io._) 2,引入某个对象 (import scala.io.StdIn)...函数的值是函数的参数和返回值的取值映射关系, 如 x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式中引用了非参数的变量时,这种函数叫做闭包。...Scala的Array和容器中的各种数据结构内置有非常丰富的高阶函数。 ? ?...Scala有3中定义类的风格,java风格,简写风格,和case类风格。 简写风格可以在类声明的参数前加上val即表示为类的属性,省去属性的绑定。...如果某个类定义时被abstract声明为抽象类时,它可以被继承但是不能直接被实例化。 和Python语言不同,Scala每个类只能继承一个超类。

    1.6K30

    原 荐 Scala的面向对象

    5)Scala中的类的成员默认的访问权限是public。也可以加private或protected。     6)当成员变量或成员方法是私有属性时,外部将不能直接访问,这个同java一样。...3)一个单例对象可以单独存在,也可以绑定到一个类上。     4)单例对象当中的所有方法,都可以不需要创建对象而直接通过object单例对象的名字直接来调用,用起来感觉就像一个静态方法一样。     ...5)当一个单例对象和某个类写在同一个源文件中且共享同一个名字时,他们就产生了一个绑定的关系。此时单例对象称为该类的伴生对象。类称为该对象的伴生类。     ...2)和java中的接口不同的是,scala中的特质可以包含具有方法体的方法。     ...1)scala中的import可以出现在代码任何地方。     2)scala中的import时可以指的是对象和包。     3)scala中的import可以重命名或隐藏一些被引用的成员。

    853130

    3小时Scala入门

    三,导入包package Scala有以下一些常见的导入package的方式 1,引入全部对象 (import scala.io._) 2,引入某个对象 (import scala.io.StdIn)...函数的值是函数的参数和返回值的取值映射关系, 如 x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式中引用了非参数的变量时,这种函数叫做闭包。...Scala的Array和容器中的各种数据结构内置有非常丰富的高阶函数。 ? ?...Scala有3中定义类的风格,java风格,简写风格,和case类风格。 简写风格可以在类声明的参数前加上val即表示为类的属性,省去属性的绑定。...如果某个类定义时被abstract声明为抽象类时,它可以被继承但是不能直接被实例化。 和Python语言不同,Scala每个类只能继承一个超类。

    1.6K30

    3小时Scala入门

    三,导入包package Scala有以下一些常见的导入package的方式 1,引入全部对象 (import scala.io._) 2,引入某个对象 (import scala.io.StdIn)...函数的值是函数的参数和返回值的取值映射关系, 如 x => x+1 x,y => x+y 。 使用这种方式声明的函数叫做匿名函数。 此外,当函数表达式中引用了非参数的变量时,这种函数叫做闭包。...Scala的Array和容器中的各种数据结构内置有非常丰富的高阶函数。 ? ?...Scala有3中定义类的风格,java风格,简写风格,和case类风格。 简写风格可以在类声明的参数前加上val即表示为类的属性,省去属性的绑定。...如果某个类定义时被abstract声明为抽象类时,它可以被继承但是不能直接被实例化。 和Python语言不同,Scala每个类只能继承一个超类。

    3.5K20

    Netty的TCP粘包拆包(源码二)

    假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器端一次读取到的字节数是不确定的,所以可能发生四种情况:   1、服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包。   ...3、服务端分两次读取到了两个数据包,第一次读取到了完整的D1包和D2包的部分内容,第二次读取到了D2包的剩余内容,这被称为TCP拆包。   ...4、服务端分两次读取到了两个数据包,第一次读取到了D1包的部分内容D1_1,第二次读取到了D1包的剩余内容D1_2和D2包的整包。   ...那么在Netty中可使用LineBasedFrameDecoder和StringDecoder   LineBasedFrameDecoder的工作原理是一次遍历ByteBuf中的可读字节,判断看是否有...就木有粘包或拆包的问题啦~~~~  机缘巧合,同事也一起实现了Scala版~ clientHandler: 1 package main.nettyscala 2 3 import io.netty.buffer

    89240

    - 类和对象之进阶(二)

    /受保护可见性,就是你可以更细粒度指定某个类或某个成员在某个作用域(可以是包或类)私有或受保护可见性 成员在类和包中的 private/protected 可见性 该可见性可以有16种组合,下面的例子列举除了这些组合...[C1]指定成员在自身类作用域 private,在该类所在的包内和包外均不可见(9也是这个道理) private[this]比 private[C1]更加严格,前者只对相同实例可见,相同类的不同实例都不可见...;而后者对相同类的不同实例也可见 private[P1]指定在包 P1 内 private,则在 P1 包中的类中均可见,而在 P1外的包均不可见 private[P2]指定在包 P2 内 private...见1 见2 见3 见4 见5 见6 见7 见8 类型在类和包中的 private/protected 可见性 类型的情况就会少一点: package P1 { private[P1] class...子包内及外部包均可见 有包 package 的子包为 package1,对于 private[package1],在 package1 包内、package1 子包及其父包即 package 内可见,

    26520

    大数据技术之_16_Scala学习_12_设计模式+泛型、上下界、视图界定、上下文界定、协变逆变不变

    把不同的单词归属到不同的组     // val res3 = res2.groupBy((x:(String, Int)) => x._1)  // 简写形式如下     // val res3 = ...将工厂抽象成两层:AbsFactory(抽象工厂) 和 具体实现的工厂子类。 17.9 单例模式 17.9.1 什么是单例模式+单例模式的应用场景 ?...insertCoin 有不同的业务逻辑   // 其它的方法同样存在这样的处理   override def insertCoin(): Unit = {     println("please wait...insertCoin 有不同的业务逻辑   override def insertCoin(): Unit = {     println("please wait! ...动态代理的应用案例 应用案例说明   有一个婚恋网项目,女友/男友有个人信息、兴趣爱好和总体评分,要求:   1、不能自己给自己评分   2、其它用户可以评分,但是不能设置信息、兴趣爱好。

    88611

    大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础

    这时这个函数实际是有返回值的,该函数并不是过程。(这点在讲解函数细节的时候讲过的)   2、开发工具的自动代码补全功能,虽然会自动加上 Unit,但是考虑到 Scala 语言的简单,灵活,最好不加。...当函数返回值被声明为 lazy 时,函数的执行将被推迟,直到我们首次对此取值,该函数才会执行,这种函数我们称之为惰性函数。...3、类是对象的模板,对象是类的一个个体,对应一个实例。   4、Scala 中类和对象的区别和联系 和 Java 是一样的。 6.1.4 如何定义类 ?...6.4.3 Scala 构造器的介绍+基本语法+快速入门 Scala 构造器的介绍   和 Java 一样,Scala 构造对象也需要调用构造方法,并且可以有任意多个构造方法(即 scala 中构造器也支持重载...Java 与 Scala 在函数层面上的不同体现: // 在 Java 中 函数(接收参数) // 在 Scala 中 集合.函数(函数) 如下图所示: ?

    2.2K10

    多面编程语言Scala

    这个结果跟Java实现的代码类似(生成的getter和 setter跟Java实现有所不同,但在这里不是什么问题),可见,Scala帮我们做了多少简化工作。...; 每个类都可以有伴生对象,伴生类与伴生对象写在同一个文件中; 在伴生类中,可以访问伴生对象的private字段Person.uniqueSkill; 而在伴生对象中,也可以访问伴生类的private方法...这是Trait的一个链式延时绑定特性,那么在现实中,这个特性就表现出极大的灵活性,可以根据需要任意搭配,大大降低代码量。 Scala的面向对象特性,暂先介绍到这里。...Array:数组是可变的同类对象序列; Set:无序不重复集合类型,有可变和不可变实现; Map:键值对的映射,有可变和不可变实现; Tuple:可以包含不同类元素,不可变实现; List:Scala的列表是不可变实现的同类对象序列...我们把cycle函数的两个输入参数进行了拆分(如上述代码第一行),同时在调用cycle函数时,方式也有所不同(如上述代码最后两行)。这是什么意思?

    2.5K40

    大数据技术之_16_Scala学习_02_变量

    1、当左右两边都是数值型时,则做加法运算。...2、当左右两边有一方为字符串,则做拼接运算。...2.7.3 整型的使用细节   1、Scala 各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证 Scala 程序的可移植性。   ...2.9.4 字符类型本质探讨 字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来 存储:字符 -> 码值 -> 二进制 -> 存储 读取:二进制 -> 码值 -> 字符 -> 读取 字符和码值的对应关系是通过字符编码表决定的...提示:scala.math 找相应的方法。 ? 2、Scala 语言的 sdk 是什么? 答:sdk指的是scala的开发工具包。 3、Scala 环境变量配置及其作用。

    1.2K40

    Scala语言快速了解一下?

    them evaluated.Type :help for more information.scala> 1 + 1res0: Int = 2在Scala将代码定义到某个包中有两种方式,第一种方法和..._,这里也能解释,为什么以scala开头的包,在使用时都是省去scala.的。如果想要引入包中的几个成员,可以使用selector(选取器):import java.awt....数值区间为 -32768 到 32767Int32位有符号补码整数。数值区间为 -2147483648 到 2147483647Long64位有符号补码整数。...作用域保护,Scala中,访问修饰符可以通过使用限定词强调。格式为:private[x]或protected[x]这里的x指代某个所属的包、类或单例对象。...如果写成private[x],读作"这个成员除了对[…]中的类或[…]中的包中的类及它们的伴生对像可见外,对其它所有类都是private。

    3K102

    一天学完spark的Scala基础语法教程一、基础语法与变量(idea版本)

    Null 值 Scala 转义字符 Scala 变量 变量声明 总结: 创建测试类: 【day1/demo1.scala】 这里是有包名(后面有讲述)的  通过Package可以创建包名...基本语法 Scala 基本语法需要注意以下几点: 区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义。...; println(s); } } Scala 包 定义包 Scala 使用 package 关键字定义包,在Scala将代码定义到某个包中有两种方式: 第一种方法和 Java 一样...浮点型字面量 如果浮点数后面有f或者F后缀时,表示这是一个Float类型,否则就是一个Double类型的。 布尔型字面量 布尔型字面量有 true 和 false。 ​​...基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。

    92030

    C++雾中风景1:友元类与面向对象

    然后这个系列的文章打算探究C++的语言特性,也比较一下不同语言(如Java,Scala,Python,Go)之间的设计哲学,同时也抛砖引玉的希望能有大拿们的指点。...在C++之中,类的友元函数是定义在类外部,但它有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。...接下来我们来分析一下友元函数的特点。 1、为什么要引入友元函数: 在实现类之间数据共享时,减少系统开销,提高效率。具体来说:为了使其他类的成员函数直接访问该类的私有变量。...所以这种类型有时也称为friendly类型,现在知道这个名字的出处了吧,大家对同一个package之中要放哪些类有木有新的认识了呢?...Scala 在Scala之中,private和protected可以指定额外的参数。

    77730
    领券