前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IoC-概述(四)

IoC-概述(四)

原创
作者头像
玖叁叁
发布2023-05-11 11:52:45
2212
发布2023-05-11 11:52:45
举报
文章被收录于专栏:玖叁叁玖叁叁

BeanFactory容器

BeanFactory是Spring Framework中另一个常用的IoC容器,它与ApplicationContext容器的最大区别在于它采用了延迟初始化策略,即只有在需要使用组件实例时才会进行初始化。这种延迟初始化的策略可以提高应用程序的性能和资源利用率。

使用BeanFactory容器,同样可以通过XML配置文件或Java代码的方式配置组件和依赖关系,并通过容器的getBean()方法来获取组件实例。下面是一个使用XML配置文件的示例:

创建一个名为applicationContext.xml的XML配置文件,内容如下:

代码语言:javascript
复制
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
       
    <bean id="userService" class="com.example.UserService">
        <property name="userDao" ref="userDao"/>
    </bean>
    
    <bean id="userDao" class="com.example.UserDaoImpl"/>
    
</beans>

在上面的XML配置文件中,我们配置了两个组件,分别是UserService和UserDaoImpl。其中,UserService依赖于UserDaoImpl,使用property元素指定了UserDaoImpl的引用。

创建一个名为UserService的Java组件类,内容如下:

代码语言:javascript
复制
public class UserService {
    private UserDao userDao;
    
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    
    // ...
}

在上面的Java代码中,我们定义了一个名为UserService的组件,并提供了一个名为setUserDao的Setter方法,用于注入UserDao依赖。

创建一个名为UserDaoImpl的Java组件类,内容如下:

代码语言:javascript
复制
public class UserDaoImpl implements UserDao {
    // ...
}

在上面的Java代码中,我们定义了一个名为UserDaoImpl的组件,并实现了UserDao接口。

创建一个名为Main的Java程序入口类,内容如下:

代码语言:javascript
复制
public class Main {
    public static void main(String[] args) {
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
        UserService userService = (UserService) factory.getBean("userService");
        // ...
    }
}

在上面的Java代码中,我们使用XmlBeanFactory类加载了名为applicationContext.xml的XML配置文件,并通过getBean()方法获取了名为userService的组件实例。

运行程序,验证是否能够正确加载组件和依赖关系。

以上就是一个简单的IoC容器的示例。通过配置文件,我们描述了应用程序中的组件及其依赖关系,并通过IoC容器将它们组装起来。这样,我们就实现了IoC的思想,将对象的创建、组装、生命周期等工作交给IoC容器完成,从而达到了松耦合、可扩展、可维护的目的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BeanFactory容器
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档