当前位置: 首页 > news >正文

辽宁省住房和建设厅网站做图片的软件app

辽宁省住房和建设厅网站,做图片的软件app,安庆建设工程造价网站,宁波建网站价格Spring之Bean详解 什么是Bean#xff1f; 在Spring中#xff0c;Bean是指由Spring容器管理的对象#xff0c;这些对象是由Spring IoC容器负责创建、组装和管理的。Bean可以是Java类的实例#xff0c;也可以是其他Spring管理的组件#xff0c;例如数据源、事务管理器等。…Spring之Bean详解 什么是Bean 在Spring中Bean是指由Spring容器管理的对象这些对象是由Spring IoC容器负责创建、组装和管理的。Bean可以是Java类的实例也可以是其他Spring管理的组件例如数据源、事务管理器等。 怎么声明一个Bean Bean的声明可以通过注解或者XML文件进行配置这里主要使用现在流行的注解模式进行讲解 通过类声明Bean 在Bean对象对应的类上添加Component 、Repository 、Service、Controller中的任意一个注解但是要注意这几个注解一般是为了让开发人员识别Bean对象的作用比如Repository : 对应持久层即 Dao 层主要用于数据库相关操作。 通过Bean声明Bean Configuration public class RedisTemplateConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplateString, Object redisTemplate new RedisTemplate();redisTemplate.setConnectionFactory(connectionFactory);redisTemplate.setKeySerializer(RedisSerializer.string());return redisTemplate;} }怎么样注入Bean对象 常见的注入方式有AutoWired和Resource这两个注解 Component public class AnalysisController {Resourceprivate Service service1;Autowiredprivate Service service2;}AutoWired和Resource区别 Autowired 属于 Spring 内置的注解默认的注入方式为byType根据类型进行匹配也就是说会优先根据接口类型去匹配并注入 Bean 接口的实现类。 这会有什么问题呢 当一个接口存在多个实现类的话byType这种方式就无法正确注入对象了因为这个时候 Spring 会同时找到多个满足条件的选择默认情况下它自己不知道选择哪一个。 例如现在容器中有两个Bean [serviceImpl1, Service, serviceImpl2, Service], Autowired会先根据Service类型找对应的Bean找到了名为serviceImpl1、serviceImpl2这两个Bean然后byName,看是否有对应的名为service1的Bean发现都没有报错 区别 Resource与Autowired相反,它是先byName找如果没找到再byType Bean的作用域 单例Singleton最常用的作用域也是Spring默认的作用域 说明 默认作用域一个容器中只存在一个Bean实例。生命周期 在容器启动时创建直到容器关闭时销毁。应用场景 适用于无状态的、共享的Bean例如服务层组件。 Scope(singleton) public class MySingletonBean {// ... }原型Prototype 说明 每次请求都会创建一个新的Bean实例。生命周期 在每次请求时创建使用后不受容器管理由Java垃圾回收机制负责销毁。应用场景 适用于有状态的、独立的Bean例如控制器、工具类等。 Scope(prototype) public class MyPrototypeBean {// ... }会话Session 说明 在Web应用中每个会话都会创建一个Bean实例。生命周期 在会话创建时创建会话销毁时销毁。应用场景 主要用于Web应用中的会话管理例如保存用户的登录状态。 Scope(session) public class MySessionBean {// ... }请求Request 说明 在Web应用中每个请求都会创建一个Bean实例。生命周期 在每次HTTP请求时创建请求结束时销毁。应用场景 主要用于Web应用中的请求处理例如保存用户请求的临时数据。 Scope(request) public class MyRequestBean {// ... }全局会话Global Session 说明 仅在Web应用中有效全局会话是一组会话的抽象由Servlet容器管理。生命周期 在全局会话创建时创建全局会话销毁时销毁。应用场景 主要用于Portlet应用中用于跨多个会话的共享Bean。 Scope(globalSession) public class MyGlobalSessionBean {// ... }选择适当的作用域取决于应用的需求通过合理配置作用域可以提高应用性能、降低资源消耗并更好地管理Bean的生命周期。 Bean的线程安全问题 在Spring中Bean的线程安全问题主要涉及到在多线程环境下共享的Bean实例。Spring默认情况下Bean是单例的即在整个应用中只有一个实例。在多线程环境下如果多个线程同时访问和修改这个单例Bean就可能引发线程安全问题。 我们这里以最常用的两种作用域 prototype 和 singleton 为例介绍。几乎所有场景的 Bean 作用域都是使用默认的 singleton 重点关注 singleton 作用域即可。 prototype 作用域下每次获取都会创建一个新的 bean 实例不存在资源竞争问题所以不存在线程安全问题。singleton 作用域下IoC 容器中只有唯一的 bean 实例可能会存在资源竞争问题取决于 Bean 是否有状态。如果这个 bean 是有状态的话那就存在线程安全问题有状态 Bean 是指包含可变的成员变量的对象。 不过大部分 Bean 实际都是无状态没有定义可变的成员变量的比如 Dao、Service这种情况下 Bean 是线程安全的。 对于有状态单例 Bean 的线程安全问题常见的有两种解决办法 在 Bean 中尽量避免定义可变的成员变量。在类中定义一个 ThreadLocal 成员变量将需要的可变成员变量保存在 ThreadLocal 中推荐的一种方式。 Bean的生命周期 在Spring框架中Bean的生命周期是管理和控制对象创建、初始化、使用和销毁的全过程。理解和掌握Bean的生命周期对于使用Spring框架开发应用程序是非常重要的一部分。 Bean的生命周期管理是为了确保在对象创建、初始化、使用和销毁的过程中Spring容器能够正确地执行各种任务如依赖注入、初始化方法、销毁方法等。通过Bean的生命周期管理Spring可以更好地控制对象的行为提高系统的可维护性和灵活性。 Bean的生命周期包括以下阶段 实例化Instantiation Spring容器根据配置文件或注解等信息实例化Bean对象。这一阶段涉及到类的加载和实例化过程。属性赋值Populate Properties Spring容器为Bean注入属性值包括基本数据类型、引用类型等。这一阶段涉及到依赖注入。初始化前Initialization 在调用Bean的初始化方法之前Spring容器可以允许用户自定义一些初始化操作。这一阶段涉及到InitializingBean接口、PostConstruct注解等。初始化Initialization 调用Bean的初始化方法完成Bean的初始化。这一阶段涉及到init-method配置、PostConstruct注解等。初始化后Initialization 在调用Bean的初始化方法之后Spring容器可以允许用户自定义一些初始化操作。这一阶段涉及到InitializingBean接口、PostConstruct注解等。使用中In Use Bean对象被正常使用处于活动状态。销毁前Destruction 在调用Bean的销毁方法之前Spring容器可以允许用户自定义一些销毁操作。这一阶段涉及到DisposableBean接口、PreDestroy注解等。销毁Destruction 调用Bean的销毁方法完成Bean的销毁。这一阶段涉及到destroy-method配置、PreDestroy注解等。 总结 Bean的生命周期是Spring框架的一个重要概念通过生命周期管理Spring容器能够更好地控制对象的创建、初始化、使用和销毁过程。理解Bean的生命周期有助于开发者更好地利用Spring框架的特性编写出高质量、易维护的应用程序。在实际应用中可以通过实现特定接口、配置初始化和销毁方法、使用注解等方式来定制Bean的生命周期。 如果觉得本篇文章对于你理解Spring的Bean有帮助可否点个小赞篇幅较长建议收藏关注一手等待后续更新更多干货 参考链接https://javaguide.cn/system-design/framework/spring/spring-knowledge-and-questions-summary.html
http://www.pierceye.com/news/763320/

相关文章:

  • 技术网站的费用怎么做会计分录潍坊模板开发建站
  • 男生女生在床上做的那个网站公众号推广一个6元
  • 湛江做网站设计公司北京婚恋网站哪家最好
  • 大型网站建设的难点是什么物联网技术
  • 怎么免费建个免费的站点写作网站5妙不写就删除
  • 深圳网站建设软件开发公司排名网站做301的坏处
  • ai网站制作的图片
  • 自己想开个网站怎么弄移动端网站设计欣赏
  • 国外网站建站上海品牌策划设计
  • 郑州网站制作选择乐云seo网站建设误区图
  • 湖南智能网站建设多少钱会声会影免费模板网站
  • 社区网站建设方案书建站之星官方网站
  • 过时的网站什么公司做企业网站
  • 最新企业网站搜索引擎优化是做什么
  • 提高网站公信力 单仁手机设计培训网站建设
  • asp.net网站管理系统域名注册报备
  • 买了个网站后怎么做如何提高 网站的点击量
  • 哪些行业网站推广做的多o2o商城源码
  • 北京seo站内优化电商网站前端页面响应式设计
  • 贵港seo关键词整站优化网站恶意攻击
  • 王磊网络网站建设公关
  • 怎么建网站做推广win网站建设
  • 在线做英语题的网站wordpress被设置不录入
  • 桃花岛网站是什么翻硬币网站怎么做
  • 做海报的网站有哪些内容windows同步wordpress
  • 制作网页的网站费用属于资本性支出吗安徽区块链虚拟币网站开发方案
  • 做网站前产品经理要了解什么搜索引擎优化免费
  • 广州网站建设技术方案营销网站推广策略
  • 郑州网站建设、中国菲律宾铁路项目
  • 潜江网站开发学校网站建设领导小组