Spring3系列3-JavaConfig

 從Spring3開始,加入了JavaConfig特性,JavaConfig特性容許開發者沒必要在Spring的xml配置文件中定義bean,能夠在Java Class中經過註釋配置bean。java

      固然,你仍然能夠用經典的XML方法定義bean,JavaConfig只是另外一個替代方案。spring

1、      環境

spring-framework-3.2.4.RELEASEapache

jdk1.7.0_11eclipse

Maven3.0.5maven

eclipse-jee-juno-SR2-win32ui

 

沒必要新建項目,仍然沿用以前的項目Spring3-Example(見「Spring3系列1-HelloWord例子」)url

2、      編輯pom.xml引入依賴包CGLIB

要想使用JavaConfig特性,必須引入CGLIB包,引入後,才能夠在Class配置bean(Class前加註釋@Configuration表示是一個Spring配置類)spa

複製代碼
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.lei.demo</groupId>
  <artifactId>spring3-Example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring3-Example</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
      <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- Spring3配置 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.2.4.RELEASE</version>
    </dependency>
    <!-- JavaConfig特性須要cglib包 -->
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>2.2.2</version>
    </dependency>
  </dependencies>
</project>
複製代碼

 

3、      編寫幾個Java Bean以下

接口IAnimal.java3d

package com.lei.demo.java_config;

public interface IAnimal {
    public void makeSound();
}

 

Dog.java實現接口IAnimalcode

複製代碼
package com.lei.demo.java_config;

public class Dog implements IAnimal {

    public void makeSound() {
        System.out.println("汪、汪、汪------");

    }

}
複製代碼

 

Cat.java實現接口IAnimal

複製代碼
package com.lei.demo.java_config;

public class Cat implements IAnimal {

    public void makeSound() {
        System.out.println("喵、喵、喵******");

    }

}
複製代碼

 

4、      用JavaConfig特性配置Spring3

看一下xml配置bean和JavaConfig配置bean的不一樣。

Xml方法,配置定義bean格式相似以下。

<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="animal" class="com.lei.demo.java_config.Dog">
</beans>

 

JavaConfig方法,經過使用註釋@Configuration 告訴Spring,這個Class是Spring的核心配置文件,而且經過使用註釋@Bean定義bean

複製代碼
package com.lei.demo.java_config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {

    @Bean(name="animal")
    public IAnimal getAnimal(){
        return new Dog();
    }
}
複製代碼

 

App.javar以下:

複製代碼
package com.lei.demo.java_config;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App {

    private static ApplicationContext context;

    public static void main(String[] args) {
        context = new AnnotationConfigApplicationContext(AppConfig.class);
        IAnimal obj = (IAnimal) context.getBean("animal");
        obj.makeSound();

    }

}
複製代碼

 

5、      目錄結構

 

6、      輸出結果

運行App.java

相關文章
相關標籤/搜索