装配Bean

1、装配wiring,即开立以对象期间的协作关系的行,者为是借助注入的本来面目。
2、创建Spring配置
于Sring3.0开始,Spring容器提供了少种植配备Bean的法子:
XML文件配置方式
基于Java注解的配置方式
3、典型的xml配置文件:
图片 1

beans命名空间不是唯一的Spring命名空间,Spring核心框架自带了10单命名空间布置,如下:
图片 2

4、当Spring容器加载Bean时,Spring使用反射来创造Bean。

5、覆盖Spring默认的单例配置:Spring
Bean默认都是单例,但奇迹我们每次都用取唯一的Bean实例,比如每个人之入场券而唯一:
俺们唯有需要配置Bean的scope属性为prototype即可:

<bean id="ticket" class="com....Ticket" scope="prototype" />

Spring提供的来意域选项:
图片 3

6、初始化和销毁Bean
Auditorium(舞台)要确保做的首和末段两件工作:
开灯,关灯。
图片 4

需要在Bean中使用init-method和destory-method属性:
图片 5

当有为数不少达标下文定义的Bean有平等名字的初始化方法与销毁方法时,可以直接当上层beans元素中宣称default-init-method和default-destory-method属性,从而避免各一个且如装同样整整的题材。

示例:
1、程序结构:

图片 6

2、简单的Spring装配

Performer.java接口

//<start id="performer_java" /> 
package com.springinaction.springidol;
public interface Performer {
  void perform() throws PerformanceException;
}
//<end id="performer_java" /> 

Juggler.java实现类

//<start id="juggler_java" /> 
package com.springinaction.springidol;
public class Juggler implements Performer {
  private int beanBags = 3;
  public Juggler() {
  }
  public Juggler(int beanBags) {
    this.beanBags = beanBags;
  }
  public void perform() throws PerformanceException {
    System.out.println("JUGGLING " + beanBags + " BEANBAGS");
  }
}
//<end id="juggler_java" />

spring-idol.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"
 xmlns:util="http://www.springframework.org/schema/util"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

  <bean id="duke" 
      class="com.springinaction.springidol.Juggler" />
</beans>

JugglerTest.java测试类

package com.springinaction.springidol;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
 * Created by LTN on 2016/4/17.
 */
public class JugglerTest {
    public static void main(String[] args) throws  Exception{
        ApplicationContext context =new  ClassPathXmlApplicationContext("com/springinaction/springidol/spring-idol.xml");
        Performer performer = (Performer) context.getBean("duke");
//        Performer performer = (Performer) context.getBean("poeticDuke");
        performer.perform();
    }
}

3、有参数的配过程
PoeticJuggler.java
其构造器需要一个int和Poem的参数

//<start id="poeticjuggler_java" /> 
package com.springinaction.springidol;
public class PoeticJuggler extends Juggler {
  private Poem poem;
  public PoeticJuggler(Poem poem) { //<co id="co_injectPoem"/>
    super();
    this.poem = poem;
  }
  public PoeticJuggler(int beanBags, Poem poem) { // <co id="co_injectPoemBeanBags"/>
    super(beanBags);
    this.poem = poem;
  }
  public void perform() throws PerformanceException {
    super.perform();
    System.out.println("While reciting...");
    poem.recite();
  }
}
//<end id="poeticjuggler_java" />

参数在xml文件被,需要以下配置:

 <constructor-arg value="15" />
 <constructor-arg ref="sonnet29" />

value可以指定基本类型;
ref是援引其他的bean定义。

Poem.java接口

//<start id="poem_java" /> 
package com.springinaction.springidol;
public interface Poem {
  void recite();
}
//<end id="poem_java" />

Sonnet29.java实现类

//<start id="sonnet29_java" /> 
package com.springinaction.springidol;
public class Sonnet29 implements Poem {
  private static String[] LINES = {
      "When, in disgrace with fortune and men's eyes,",
      "I all alone beweep my outcast state",
      "And trouble deaf heaven with my bootless cries",
      "And look upon myself and curse my fate,",
      "Wishing me like to one more rich in hope,",
      "Featured like him, like him with friends possess'd,",
      "Desiring this man's art and that man's scope,",
      "With what I most enjoy contented least;",
      "Yet in these thoughts myself almost despising,",
      "Haply I think on thee, and then my state,",
      "Like to the lark at break of day arising",
      "From sullen earth, sings hymns at heaven's gate;",
      "For thy sweet love remember'd such wealth brings",
      "That then I scorn to change my state with kings." };
  public Sonnet29() {
  }
  public void recite() {
    for (int i = 0; i < LINES.length; i++) {
      System.out.println(LINES[i]);
    }
  }
}
//<end id="sonnet29_java" />

spring-idol.java配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:util="http://www.springframework.org/schema/util"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
  <!--<start id="duke_bean" />--> 
  <bean id="duke" 
      class="com.springinaction.springidol.Juggler" />
  <!--<end id="duke_bean" />-->
  <!--<start id="poeticduke_bean" />--> 
  <bean id="poeticDuke"
      class="com.springinaction.springidol.PoeticJuggler">
    <constructor-arg value="15" />
    <constructor-arg ref="sonnet29" />
  </bean>
  <!--<end id="poeticduke_bean" />-->

  <!--<start id="sonnet29_bean" />--> 
  <bean id="sonnet29"
      class="com.springinaction.springidol.Sonnet29" />
  <!--<end id="sonnet29_bean" />-->
</beans>

相关文章

网站地图xml地图