spring bean单多例和生命周期
spring中,bean可以被定义为两种模式,分别为singleton和prototype模式,默认是单例模式,即只有一个共享实例存在,每次请求这个bean都会返回这个唯一的实例。而多例模式每次请求bean都会返回一个新的bean实例,相当于每次请求都new一个实例。
配置单例多例的方法:在bean上面加注解@scope()注解可以配置单例和多例模式
bean生命周期
- spring只会帮我们管理单例模式bean完整的生命周期,而多例模式的bean spring创建好后把它交给使用者之后便不会再管理
- 对于Beanfactory容器,bean在第一次被调用的时候在被真正的创建,但是对于ApplicationContext容器,在第一次加载容器的时候就创建所有bean,等容器关闭的时候销毁所有对象
java枚举
枚举除了不能继承,基本上可以把枚举当做一个类来看待
- 枚举内可以添加任何方法,甚至是构造方法,但是声明枚举常量时不允许使用赋值运算符为枚举常量赋值,但是可以通过方法来实现间接赋值
- 枚举常量不需要任何修饰符
java默认访问权限
不论是类,方法,还是变量,当不加任何权限修饰词时,访问权限都是包访问权限
不推荐字段注入的原因
- 对象的外部可见性,无法在容器外部注入依赖
- 可能导致循环依赖问题,即a依赖b,b依赖a,结果在创建它们两个时导致无法创建
- 无法设置注入的对象为final,也无法注入静态变量
三种注入方式:字段注入,构造函数注入,setter函数注入
使用接口的原因
- 有利于代码的规范,服务的规范
- 有利于后续代码的运行维护修改
try catch finally
块中不含return的情况
- try中没有异常:则执行完try中的内容后执行finally里的内容
- try中含有异常,catch中无异常:捕获try中的异常之后,跳转到catch里面执行,执行完后执行finally里的内容
- try中含异常,catch中也含有异常:跳转到catch之后,catch也出现异常,然后跳转到finally里执行完后抛出异常
块中含有return的情况
- finally中含有return时会覆盖try-catch里面的return值,并且会覆盖catch中抛出的异常信息
- 如果catch中有return语句,并不是函数直接返回,而是执行完finally里的内容后再返回
springboot配置文件中的on和off
在其配置文件中,on和off被默认读出来是true和false,而带单引号的on和off才会被读成原始字符串,其他字符串均被读出原始字符串
StringBuilder类
程序开发过程中,经常碰到字符串需要连接的情况,常用的方法是使用 + 号,但是这种方法每加一次就新创建了一个String对象,而且连接效率比较低,并且比较费空间,使用StringBuilder类,即可变长字符序列,可以避免这种问题的产生。
- append():字符串连接
- toString():返回一个与构建器或缓冲器内容相同的字符串
final用法
- 修饰基本数据类型:表示该数据是个常量,不能被修改
- 修饰对象的引用:表示该引用不可被重新赋值,即该引用一直指向该对象,但是对象仍然可以被修改
- 修饰类:表示该类不可被继承
- 修饰方法:说明当前方法已经满足要求,不允许继承的类来重写此方法进行扩展