`
- 浏览:
39051 次
- 性别:
- 来自:
上海
-
1: 这个例子中我们使用工厂模式来取的bean。首先我们来获取context
public class SpringContextSupport implements ServletContextAware {
private static Object initObj = null;
private static int count = 0;
private static ApplicationContext context;
public static void init(Object o) {
initObj = o;
count++;
}
/**
*
* gets the instance from the beanId
*
* @param object
* @return void
*/
public static Object getBean(String beanName) {
return getApplicationContext().getBean(beanName);
}
/**
*
* returns applicationContext based on initObj
*
* @return ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
if (initObj == null) {
throw new IllegalStateException(
"Application context not initialized");
} else if (initObj instanceof ServletContext) {
ServletContext servletContext = (ServletContext) initObj;
return WebApplicationContextUtils
.getRequiredWebApplicationContext(servletContext);
} else if (initObj instanceof String) {
if (context == null) {
context = new FileSystemXmlApplicationContext(
Constants.FILE_CONTEXT_PATH);
}
return context;
} else {
throw new IllegalStateException(
"You must initialize the context with a String");
}
}
/**
*
* initializes servletContext
*
* @param context
* @return void
*/
public void setServletContext(ServletContext context) {
init(context);
}
public static void initializeStandalone() {
init("StandAlone");
}
/**
*
* initializes servletContext for bid board batch
*
* @param context
* @return void
*/
public static void initBidBoardBatch() {
init( Constants.BB_BATCH_STARTUP);
}
}
备注: String FILE_CONTEXT_PATH = "WEB-INF/conf/user-services.xml";
那么在这个文件中就是我们配置的bean
2: 具体通过工厂是方法来取得我们所需要的bean
public class DAOFactory {
public UserDAO getUserDAO() throws Exception {
UserDAO userDAO = null;
try {
userDAO = (UserDAO) SpringContextSupport
.getBean(DAOConstants.USER_DAO);
} catch (Exception exception) {
throw exception;
}
return userDAO;
}
}
3: 那么我们想对应的service工厂模式的创建也类似:如下:
public class CommonServiceFactory {
public CommonService getCommonService() throws BBSystemException {
CommonService commonService = null;
commonService =
(CommonService) SpringContextSupport
.getBean(BBServiceConstants.COMMON_SERVICE);
if (null == commonService) {
throw BBUtil.getBBSystemException(BBMessageConstants.OBJECTS_NULL);
}
return commonService;
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
本文将详细阐述Spring通过工厂创建Bean的三种方式。 ### 1. 静态工厂 静态工厂是一种不依赖于实例化就能创建对象的方法,它通过类的静态方法来生成Bean。这种方式中,工厂类不需要被实例化,直接调用静态方法即可...
在`doCreateBean()`方法中,Spring会创建Bean的实例,`createBeanInstance(beanName, mbd, args)`执行Bean实例的创建,而`populateBean(beanName, mbd, instanceWrapper)`则负责填充Bean的属性,将依赖注入到Bean中...
Spring框架中提供了多种方式来创建bean实例,包括通过构造器、静态工厂方法和实例工厂方法等。这种方式可以让开发者更好地控制bean的创建过程,实现更多的自定义需求。 通过构造器方式创建bean实例 在Spring中,...
在Spring框架中,静态工厂方法是一种创建Bean对象的方式,它允许我们通过调用类中的静态方法来实例化对象,而不是直接使用new关键字。这种方式在某些特定场景下非常有用,例如当我们需要控制对象的创建过程或者对象...
Spring通过Bean工厂和ApplicationContext来实现这一功能。 在Java代码中创建Bean,我们需要创建一个类,并使用`@Component`、`@Service`、`@Repository`或`@Controller`注解来标记。这些注解都是Spring的@...
Spring IOC 04 配置通过静态工厂方法创建的bean、实例工厂创建的bean、FactoryBean (1)bean的创建默认就是框架利用反射new出来的bean实例; (2)工厂模式:工厂帮我们创建对象,有一个专门帮我们创建对象的类,这...
Bean可以通过简单的构造函数、工厂方法或工厂Bean来创建。 工厂Bean是实现了`org.springframework.beans.factory.FactoryBean`接口的类。这个接口定义了两个核心方法:`getObject()`用于返回实际的业务对象,`...
静态工厂方法与实例工厂方法类似,区别在于它不依赖于工厂类的实例,而是直接调用工厂类的静态方法来创建Bean。配置如下: ```xml <bean id="exampleBean" factory-class=...
Spring通过工厂模式设计了一系列工厂类来创建对象。在早期版本中,主要通过BeanFactory和ApplicationContext两个工厂类来管理Bean的生命周期。ApplicationContext是BeanFactory的子接口,提供了更为丰富的功能。 2....
3. **依赖注入**:Spring会根据BeanDefinition中的依赖关系,通过设值注入(setter方法)或构造器注入来创建Bean实例。 4. **初始化**:Spring会调用Bean的初始化回调方法,即带有@PostConstruct注解的方法或init-...
4. **静态工厂方法或Singleton作用域**:如果使用静态工厂方法创建Bean,且未正确配置单例模式,那么每次请求都会创建新的Bean实例。对于Singleton作用域的Bean,Spring保证在整个容器生命周期内只有一个实例,如果...
总的来说,JavaEE Spring中的静态工厂创建实例是一种高级的DI实现方式,它提供了更多的灵活性和控制力,但同时也增加了代码的复杂性。理解并合理运用静态工厂方法,可以帮助我们更好地设计和组织应用程序的架构。在...
在Spring配置文件中,可以通过`<bean>`标签的`constructor-arg`子标签来指定构造函数参数,Spring会根据这些参数调用相应的构造函数来创建Bean实例。例如: ```xml <bean id="exampleBean" class=...
- **factory-bean/factory-method属性**:通过工厂方法创建Bean。`factory-bean`属性指向工厂Bean,而`factory-method`属性指定工厂方法。 - **depends-on属性**:指定Bean的依赖关系,确保某些Bean在其他Bean之前...
·调用实例工厂方法创建bean 时,必须使用factory-bean 属性来确定工厂bean。 而静态工厂方法则使用class 元素确定静态工厂类。 其相同之处如下: ·都需使用factory-method属性指定产生bean 实例的工厂方法。 ...
1. **实例化**:这是生命周期的第一步,Spring通过反射或者工厂方法来创建Bean的实例。根据`<bean>`标签中的`class`属性,Spring确定Bean的类型并进行实例化。 2. **属性注入**:接着,Spring会利用依赖注入...
依赖注入是Spring框架的一个核心特性,它允许将对象之间的依赖关系通过外部容器来管理,而不是由对象内部自行创建。这样做的好处是提高了代码的可测试性和可维护性,因为对象的依赖关系可以更容易地被模拟或替换。 ...
在Spring框架中,Bean的创建方式多样,其中两种常见的非XML配置方式是通过静态工厂方法和实例工厂方法来创建Bean。这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态...
本笔记将详细探讨如何通过实现`FactoryBean`接口来创建Bean,以及在Spring4中如何应用这一特性。 `FactoryBean`是Spring提供的一个接口,它提供了一种方式,让我们能够控制对象的创建过程。当你在Spring配置文件中...
除了构造器注入,Spring还支持通过静态工厂方法来创建Bean实例。这种方式不需要Bean类提供构造器,而是通过调用一个静态工厂方法来创建Bean。这种方法的优势在于它可以提供更多的灵活性,例如可以在创建Bean时进行...