Spring实例化bean的三种方法

简介: 1.用构造器来实例化   [html] view plain copy    print?      2.使用静态工厂方法实例化   要写一个bean,bean中定义一个静态方法,生成bean,配置factory-method指定静态方法,运行时容器就会自动...

1.用构造器来实例化

 

[html]  view plain  copy
 
 print?
  1. <bean id="hello2" class="com.hsit.hello.impl.ENhello" />  

 

2.使用静态工厂方法实例化

 

要写一个bean,bean中定义一个静态方法,生成bean,配置factory-method指定静态方法,运行时容器就会自动调用静态方法生成实例

 

bean

 

[java]  view plain  copy
 
 print?
  1. package com.hsit.hello.impl;  
  2.   
  3. import com.hsit.hello.IHello;  
  4.   
  5. public class CHhello implements IHello {  
  6.   
  7.     private String msg;  
  8.   
  9.     public void sayHello() {  
  10.         System.out.println("中文" + msg);  
  11.     }  
  12.   
  13.     public String getMsg() {  
  14.         return msg;  
  15.     }  
  16.   
  17.     public void setMsg(String msg) {  
  18.         this.msg = msg;  
  19.     }  
  20.       
  21.     @Override  
  22.     public String toString() {  
  23.         // TODO Auto-generated method stub  
  24.         return "Chinese";  
  25.     }  
  26.   
  27.     public static CHhello createInstance() {  
  28.         System.out.println("jingtai");  
  29.         return new CHhello();  
  30.     }  
  31. }  



 

 

配置文件

 

 

[html]  view plain  copy
 
 print?
  1. <bean id="hello1" class="com.hsit.hello.impl.CHhello" factory-method="createInstance" lazy-init="true">  
  2.     <!-- setter注入 -->  
  3.         <property name="msg" value="哈哈">  
  4.         </property>  
  5.     </bean>  



 

3.使用实例工厂方法实例化

 

 

要写两个bean,一个是要实例化的bean,另一个是工厂bean。容器先实例化工厂bean,然后调用工厂bean配置项factory-method中指定的静态方法,在方法中实例化bean

 

[java]  view plain  copy
 
 print?
  1. package com.hsit.hello.impl;  
  2.   
  3. public class ENhelloFactory {  
  4.       
  5.     public ENhello createInstance() {  
  6.         System.out.println("ENhello工厂");  
  7.         return new ENhello();  
  8.     }  
  9.       
  10.     public ENhelloFactory() {  
  11.         System.out.println("chuanjian");  
  12.     }  
  13.   
  14. }  


 

[java]  view plain  copy
 
 print?
  1. package com.hsit.hello.impl;  
  2.   
  3. import com.hsit.hello.IHello;  
  4.   
  5. public class ENhello implements IHello {  
  6.   
  7.     @Override  
  8.     public void sayHello() {  
  9.         // TODO Auto-generated method stub  
  10.         System.out.println("hello");  
  11.     }  
  12.       
  13.     @Override  
  14.     public String toString() {  
  15.         // TODO Auto-generated method stub  
  16.         return "我是ENhello";  
  17.     }  
  18. }  


配置文件

[html]  view plain  copy
 
 print?
  1. <bean id="eHelloFactory" class="com.hsit.hello.impl.ENhelloFactory" />  
  2. <!-- factory-bean填上工厂bean的id,指定工厂bean的工厂方法生成实例,class属性不填 -->  
  3. <bean id="example" factory-bean="eHelloFactory"   factory-method="createInstance"/>  

 

测试代码

[java]  view plain  copy
 
 print?
  1. BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");  
  2.           
  3.         ENhello eNhello = (ENhello) factory.getBean("example");  
  4.         System.out.println(eNhello.toString());  
  5.           
  6.          factory.getBean("hello1");  

 

http://blog.csdn.net/q3498233/article/details/6695580

 

相关文章
|
8月前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
543 26
|
6月前
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
576 5
|
6月前
|
Java Spring 容器
两种Spring Boot 项目启动自动执行方法的实现方式
在Spring Boot项目启动后执行特定代码的实际应用场景中,可通过实现`ApplicationRunner`或`CommandLineRunner`接口完成初始化操作,如系统常量或配置加载。两者均支持通过`@Order`注解控制执行顺序,值越小优先级越高。区别在于参数接收方式:`CommandLineRunner`使用字符串数组,而`ApplicationRunner`采用`ApplicationArguments`对象。注意,`@Order`仅影响Bean执行顺序,不影响加载顺序。
488 2
|
8月前
|
人工智能 自然语言处理 Java
Spring 集成 DeepSeek 的 3大方法(史上最全)
DeepSeek 的 API 接口和 OpenAI 是兼容的。我们可以自定义 http client,按照 OpenAI 的rest 接口格式,去访问 DeepSeek。自定义 Client 集成DeepSeek ,可以通过以下步骤实现。步骤 1:准备工作访问 DeepSeek 的开发者平台,注册并获取 API 密钥。DeepSeek 提供了与 OpenAI 兼容的 API 端点(例如),确保你已获取正确的 API 地址。
Spring 集成 DeepSeek 的 3大方法(史上最全)
|
10月前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
324 73
|
10月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
192 12
|
10月前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
241 12
|
10月前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
279 6
|
3月前
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
771 0