首页 > 其他分享 >spring中的bean对象的有关了解

spring中的bean对象的有关了解

时间:2023-07-17 16:14:49浏览次数:35  
标签:对象 spring Bean bean 实例 注解 myBean MyBean

@Configuration
public class AppConfig {
  
  @Bean
  public MyBean getMyBean() {
    MyBean myBean = new MyBean();
    myBean.setName("Example");
    return myBean;
  }
  
  // 其他的@Bean方法...
}

上述是一个配置类,里面有个@Bean注解修饰,@Configuration注解的类里面的方法在Spring容器启动时并不会立即执行,而是在需要获取被@Bean注解标记的Bean实例时才会被调用。这样可以实现懒加载,只有在需要使用某个Bean时才去创建它。

如何获取到这个类呢

 第一种:
@Autowired private MyBean myBean;
第二种:
@Autowired private ApplicationContext applicationContext;
public void someMethod() {
AppConfig appConfig= applicationContext.getBean(AppConfig.class);
MyBean myBean = appConfig.getMyBean();
// 使用获得的 MyBean 对象
}

需要注意的是默认情况下会注入同一个对象实例。这是因为被 @Bean 注解标记的方法的返回值默认是单例的,也就是说在整个应用程序的生命周期中,都会共享同一个对象实例。不管在哪个类里面调用,也都是同一个对象,

如果在任何地方重新对该对象 进行赋值,那么所有使用到这个对象的地方都会受到影响,因为它们引用的都是同一个对象实例

问题来了,当时多线程的时候,就会出现线程安全问题,对于这种线程安全问题,可以采取以下几种策略

标签:对象,spring,Bean,bean,实例,注解,myBean,MyBean
From: https://www.cnblogs.com/ForeverLoveByMe/p/17560378.html

相关文章

  • springboot相较之前ssm有什么区别和优势
    1、快速可搭建的脚手架,少量配置,约定优于配置,不用像ssm那样增加复杂的配置文件2、这种方式使程序员更加集中于业务代码的编写,而不用关注部署和容器配置的问题3、约定优于配置也不是任何场景都适用,主要还是免去了servlet的配置4、内置tomcat直接启动......
  • Spring 整合Redis
    1.配置application.ymlspring:application:name:meter-highwayprofiles:active:druid,mongodb,dubbo,rabbitmq,redisapplication-redis.ymlspring:redis:database:9host:192.168.13.146port:6379password:Luban376timeout:20002.依赖<dependency>......
  • Quote对象
    Quote对象Map<Integer,Quote>kolQuote=quoteInfos.stream().collect(Collectors.toMap(Quote::getQuoteNum,Function.identity(),(key1,key2)->key2));Function.identity()==o->o使用toMap()函数之后,返回的就是一个Map了,自然会需要key和value。toMap()的第......
  • 第七节 面向对象
    知识点面向对象题目1(完成)定义手机类,手机有品牌(brand),价格(price)和颜色(color)三个属性,有打电话call()和sendMessage()两个功能。请定义出手机类,类中要有空参、有参构造方法,set/get方法。定义测试类,在主方法中使用空参构造创建对象,使用set方法赋值。调用对象的两个功能,打......
  • spring启动流程 (5) Autowired原理
    构造方法参数AutowireBeanClass可以在构造方法上标注@Autowired注解,Spring在创建Bean实例时将自动为其注入依赖参数Spring会优先使用标注@Autowired注解的构造方法当一个构造方法标注了@Autowired注解且required=true时,其余构造方法不允许再标注@Autowired注解当多个构造方法......
  • 33面向对象设计类的分类
    类的分类:边界类、控制类、实体类边界类:机器接口:AIP接口,人机交互:用户界面 如显示屏,打印机接口,菜单,标题等控制类:应用逻辑、业务逻辑、数据访问逻辑,如身份验证实体类:数据。学生实体判断控制类,先排除边界类和实体类......
  • Spring
    1.注解 @Value使用在字段或方法上,用于注入普通数据 一般用于注入配置信息 @Autowired使用在字段或方法上,用于根据类型注入引用数据 @Qualifier使用在字段或方法上,结合@Autowired,根据名称注入 @Resource使用在字段或方法上,根据类型或名称进行注入2.spring的其......
  • aliyun oss对象存储服务的使用和配置
     引入依赖(依赖冲突可使用mavenhelper插件来排除,或者通过启动异常进行判断,或者看官方文档寻找答案) <dependency>   <groupId>com.aliyun.oss</groupId>   <artifactId>aliyun-sdk-oss</artifactId>   <version>3.5.0</version>   <exclusions>  ......
  • springboot中静态资源的访问相关知识
    一、基本介绍:(一)、只要静态资源放在类路径下(什么是类路径:在resources文件下)默认是这几个目录文件:/static、/public、/resources、/META-INF/resources等目录下的文件直接能够被访问(二)、常见的静态资源:Js、css、图片(jbg、png、svg、gif、bmp)、字体文件(fonts)等(三)、访问方式:......
  • springboot或spring中使用编程式事务和声明式事务
    转载:https://developer.aliyun.com/article/789471https://www.bilibili.com/video/BV1q14y1m7B6/?spm_id_from=333.788.recommend_more_video.1&vd_source=46d50b5d646b50dcb2a208d3946b1598事务失效场景......