1.0-Spring IoC 容器

1,Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件
2,Spring IoC 容器利用 Java 的 POJO 类和配置元数据来生成完全配置和可执行的系统或应用程序
3,配置元数据可以通过 XML,Java 注释或 Java 代码来表示
4,面向方面(切面)的程序设计(AOP)

BeanFactory 容器(已过时)

XmlBeanFactory factory = new XmlBeanFactory
                             (new ClassPathResource("Beans.xml"));

配置文件 Beans.xml 中的内容:

<?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-3.0.xsd">

   <bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>

ApplicationContext 容器

  • FileSystemXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你需要提供给构造器 XML 文件的完整路径。
ApplicationContext context = new FileSystemXmlApplicationContext
            ("C:/Users/ZARA/workspace/HelloSpring/src/beans.xml");
  • ClassPathXmlApplicationContext:该容器从 XML 文件中加载已被定义的 bean。在这里,你不需要提供 XML 文件的完整路径,只需正确配置 CLASSPATH 环境变量即可,因为,容器会从 CLASSPATH 中搜索 bean 配置文件。
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
  • WebXmlApplicationContext:该容器会在一个 web 应用程序的范围内加载在 XML 文件中已被定义的 bean。

Spring Bean 的生命周期

基本定义

<bean id="..." class="..."> </bean>

初始化
指向某个类的方法名为init()的方法作为初始化的回调方法

<bean id="xxxBean" 
         class="xxx.xxxBean" init-method="init"/>

或者继承 InitializingBean

public class ExampleBean implements InitializingBean {
   public void afterPropertiesSet() {
      // do some initialization work
   }
}

销毁
指向某个类的方法名为destroy()的方法作为销毁的回调方法

<bean id="xxxBean" 
         class="xxx.xxxBean" destroy-method="destroy"/>

或者继承 DisposableBean

public class ExampleBean implements DisposableBean  {
   public void destroy() {
      // do some initialization work
   }
}

后置处理
在初始化之前或者在销毁之后执行的操作
继承接口BeanPostProcessor

import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.BeansException;
public class InitHelloWorld implements BeanPostProcessor {
   public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
      System.out.println("在初始化之前 : " + beanName);
      return bean;  // you can return any other object as well
   }
   public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
      System.out.println("在销毁之后: " + beanName);
      return bean;  // you can return any other object as well
   }
}

Spring Bean 作用域

关键字:scope

<bean id="..." class="..." scope="singleton"></bean>
作用域描述
singletonBean以单例方式存在,默认值
prototype每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()
request每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
session同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境global-session 一般用于Portlet应用环境,改作用于仅适用于WebApplicationContext环境

Spring Bean 的定义继承

关键字parent,继承:
继承bean.xml中其他的bean定义,这里xxx2继承了xxx1,可以向java代码一样重写其中的property标签

<bean id="xxx2" class="com.xxx.xxx" parent="xxx1">
      <property name="xxx1" value="Hello India!"/>
      <property name="xxx2" value="Namaste India!"/>
</bean>

关键字abstract,抽象
abstract=”true”,表明继承这个bean的bean不能得到其中property的任何一个值,它只是充当一个模板

<bean id="xxx1" abstract="true">
      <property name="xxx1" value="Hello World!"/>
      <property name="xxx2" value="Hello Second World!"/>
      <property name="xxx3" value="Namaste India!"/>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值