有什么可以做翻译的网站吗,深圳网站建设icxun,wordpress 下载附件,网站制作营销型目录 Spring中Bean的作用域有哪些#xff1f;Spring中Bean的生命周期Bean 是线程安全的吗#xff1f;了解Spring Boot中的日志组件吗#xff1f; Spring中Bean的作用域有哪些#xff1f; Bean的作用域#xff1a;
singleton#xff1a;单例#xff0c;Spring中的bean默… 目录 Spring中Bean的作用域有哪些Spring中Bean的生命周期Bean 是线程安全的吗了解Spring Boot中的日志组件吗 Spring中Bean的作用域有哪些 Bean的作用域
singleton单例Spring中的bean默认都是单例的。prototype多例每次请求都会创建一个新的bean实例。request每一次HTTP请求都会产生一个新的bean该bean仅在当前HTTP request内有效。session每一次HTTP请求都会产生一个新的bean该bean仅在当前HTTP session内有效。global-session全局session作用域。
Spring中Bean的生命周期 Bean生命周期可以粗略的划分为五大步
第一步实例化Bean第二步Bean属性赋值第三步初始化Bean第四步使用Bean第五步销毁Bean
案例
/*** 业务层实现类*/
public class UserServiceImpl implements UserService {private UserDao userDao;public UserServiceImpl() {System.out.println(调用构造方法创建bean...);}public void setUserDao(UserDao userDao) {System.out.println(调用set方法注入值...);this.userDao userDao;}public void init(){System.out.println(调用init方法初始化bean...);}public void destroy(){System.out.println(调用destroy方法销毁bean...);}public void addUser(){userDao.addUser();}
}生命周期 单例(singleton)[容器启动]—构造方法(实例化)—set方法(注入)—init方法(初始化)—[容器关闭]—destroy方法(销毁)多例(prototype)[使用对象]----构造方法(实例化)—set方法(注入)—init方法(初始化)—[JVM垃圾回收]—destroy方法(销毁) Bean 是线程安全的吗 Spring 框架中的 Bean 是否线程安全取决于其作用域和状态。
以最常用的两种作用域 prototype多例 和 singleton 单例为例介绍。几乎所有场景的 Bean 作用域都是使用默认的 singleton 重点关注 singleton 作用域即可。 prototype 作用域下每次获取都会创建一个新的 bean 实例不存在资源竞争问题所以不存在线程安全问题。 singleton 作用域下IoC 容器中只有唯一的 bean 实例可能会存在资源竞争问题取决于 Bean 是否有状态。 有状态Bean包含可变的成员变量的对象存在线程安全问题。无状态Bean没有定义可变的成员变量比如dao和service不能保存数据是线程安全的。
了解Spring Boot中的日志组件吗 在Spring Boot中日志组件的设计遵循了门面模式Facade Pattern的概念。
门面模式是一种结构型设计模式它提供了一个统一的接口来访问子系统中的一群接口。这可以简化客户端与子系统之间的交互同时提供了一层抽象使系统更加灵活和易于维护。
在日志处理方面Spring Boot使用SLF4JSimple Logging Facade for Java作为门面。
SLF4J是一个抽象层它为Java平台上的多种日志框架提供了一个统一的接口。
这意味着开发人员在编写代码时只需调用SLF4J的API而不需要关心底层具体使用的是哪种日志框架如Logback、Log4j、Log4j2、JULJava Util Logging等。