其他分享
首页 > 其他分享> > icode9教你如何使用SpringBean的实例化

icode9教你如何使用SpringBean的实例化

作者:互联网

在Spring框架中,想使用Spring容器中的Bean,需要先实例化Bean

SpringBean的实例化有3种方式

构造方法实例化 (最常用)

在Java配置类中,写一个构造方法,在这个构造方法中new一个Bean实例,
然后在构造方法上添加注解@Bean(value="beanClass") ,这里的beanClass是Bean实例的名称,一般使用小驼峰命名。

示例代码
TestBean1.java


 
  package cn.lzh.kam.pojo;
   
  import lombok.Getter;
  import lombok.Setter;
   
  @Getter
  @Setter
  public class TestBean1 {
  private String msg;
   
  public TestBean1() {
  this.msg = "测试-构造方法实例化bean";
  }
   
  public TestBean1(String msg) {
  this.msg = msg;
  }
  }
   

JavaCfg.java


 
  package cn.lzh.kam.cfg;
   
  import cn.lzh.kam.pojo.TestBean1;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
   
  @Configuration
  public class JavaCfg {
   
  @Bean(value = "testBean1")
  public TestBean1 getTestBean1(){
  //手动new一个bean实例
  return new TestBean1();
  }
  }
   

然后,业务代码中使用testBean1这个实例,2种方式
第一种,利用context.getBean


 
  public static void main(String[] args) {
  ConfigurableApplicationContext context = SpringApplication.run(KamApplication.class, args);
  TestBean1 testBean1 = (TestBean1) context.getBean("testBean1");
  System.err.println(testBean1.getMsg());
  }

第二种,利用注解注入实例


 
  @Service
  public class LoginService {
  @Autowired
  @Qualifier("testBean1")
  private TestBean1 testBean1;
  }

静态工厂实例化

新建一个静态工厂类,用于实例化上面的TestBean1.java 。
在这个静态工厂类中,要先通过静态变量方式手动new一个Bean实例,然后用createInstance静态方法renturn出这个实例;
最后,在Java配置类中,写一个构造方法,在这个构造方法中调用刚刚的静态工厂的createInstance方法来返回Bean实例。

示例代码
BeanStaticFactory.java


 
  package cn.lzh.kam.pojo;
   
  public class BeanStaticFactory {
  private static TestBean1 tb2 = new TestBean1("调用静态工厂来实例化Bean");
  public static TestBean1 createInstance(){
  return tb2;
  }
  }

JavaCfg.java


 
  package cn.lzh.kam.cfg;
   
  import cn.lzh.kam.pojo.BeanStaticFactory;
  import cn.lzh.kam.pojo.TestBean1;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
   
  @Configuration
  public class JavaCfg {
  @Bean(value = "tb2")
  public TestBean1 getTb2(){
  //直接调用静态工厂的静态方法
  return BeanStaticFactory.createInstance();
  }
  }

实例工厂实例化

新建一个工厂类,该类中新建一个方法用来手动new出1个Bean实例并返回。
然后,在Java配置类中,写一个构造方法,
在这个构造方法中,要先new一个工厂类的实例,
然后用调用实例工厂的 createTb3Instance 方法来返回Bean实例。

示例代码
BeanInstanceFactory.java


 
  package cn.lzh.kam.pojo;
   
  public class BeanInstanceFactory {
  public TestBean1 createTb3Instance(){
  return new TestBean1("调用实例工厂来实例化Bean");
  }
  }

JavaCfg.java


 
  package cn.lzh.kam.cfg;
   
  import cn.lzh.kam.pojo.BeanInstanceFactory;
  import cn.lzh.kam.pojo.BeanStaticFactory;
  import cn.lzh.kam.pojo.TestBean1;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
   
  @Configuration
  public class JavaCfg {
  @Bean(value = "tb3")
  public TestBean1 getTb3(){
  //要先实例化 工厂类
  BeanInstanceFactory bi = new BeanInstanceFactory();
  return bi.createTb3Instance();

标签:框架设计,框架,网络模型,数据加载,优化器,函数
来源: