微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring基于XML的IoC

Maven导入Spring依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.3</version>
</dependency>

Spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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="account" class="com.ttpfx.domain.Account"/>
</beans>

beanfactory 和 ApplicationContext 的区别

beanfactory:在使用对象时创建对象
ApplicationContext:在加载配置文件时创建对象(认情况下)

使用beanfactory:

Resource resource = new ClassPathResource("Beans.xml");
beanfactory beanfactory = new Xmlbeanfactory(resource);
Account account = beanfactory.getBean(Account.class);
System.out.println(account);

使用ApplicationContext:

ClasspathXmlApplicationContext applicationContext = new ClasspathXmlApplicationContext("Beans.xml");
Account account = applicationContext.getBean("account", Account.class);
System.out.println(account);

创建Bean的三种方式

  1. 通过构造方法创建对象
<bean id="account" class="com.ttpfx.domain.Account"/>
  1. 通过普通工厂类的实例方法创建实例:
<bean id="instanceFactory" class="com.ttpfx.factory.InstanceFactory"/>
<bean id="account" factory-bean="instanceFactory" factory-method="getAccount"/>
  1. 通过静态工厂类的静态方法创建实例:
<bean id="account" class="com.ttpfx.factory.StaticFactory" factory-method="getAccount"/>

Bean的作用范围

通过bean标签的scope属性指定其作用域

<bean id="account" class="com.ttpfx.domain.Account" scope="prototype"/>
  • singleton:在Spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,认值
  • prototype:每次调用getBean时创建一个新的实例
  • request:每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
  • session:同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境
  • global-session:一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext环境

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。