标签:
并不是所有的开发人员都喜欢使用XML,所以Spring3.0 为这些人准备了一些特别的东西。可以几乎不使用XML而使用纯粹的Java代码来配置Spring应用。并且基于Java的配置拥有一些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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.sjf.bean">
</context:component-scan>
</beans>
package com.sjf.bean;
import org.springframework.context.annotation.Configuration;
/**
* 基于Java的配置
* @author sjf0115
*
*/
@Configuration
public class SpringConfig {
// Bean declaration methods
}
package com.sjf.bean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 基于Java的配置
* @author sjf0115
*
*/
@Configuration
public class SpringConfig {
// Bean declaration methods
@Bean
public Student studentBean(){
return new Student();
}
}
<bean id = "studentBean" class = "com.sjf.bean.Student">
</bean>
在XML配置中,Bean的类型和ID都是由Spring属性来表示的。Spring标识符的缺点是它们无法进行编译器检查。在Spring的基于Java的配置中并没有String属性。Bean的ID和类型都被视为方法签名的一部分。Bean的实际创建是在方法体中定义的。因为它们全都是Java代码,所以我们可以进行编译器检查确保Bean的类型是合法类型,并且Bean的ID是唯一的。 |
@Bean
public Student studentBean(){
return new Student("yoona",24);
}
@Bean
public Student studentBean(){
Student stu = new Student();
stu.setName("yoona");
stu.setAge(24);
return stu;
}
@Bean
public School schoolBean(){
School school = new School();
school.setName("西安电子科技大学");
school.setLocation("西安");
return school;
}
@Bean
public Student yoonaStudent(){
return new Student(schoolBean());
}
在Spring的Java配置中,通过声明方法引用一个Bean并不等于等于调用该方法。如果真这样,每次调用schoolBean(),都将得到该Bean的一个新的实例。通过使用@Bean注解标注schoolBean()方法,会告知Spring我们希望该方法定义的Bean要被注册进Spring的应用上下文中。因此,其他Bean的声明方法中运用这个方法时,Spring都会拦截该方法的调用,并尝试在应用上下文中查找该Bean,而不是让方法创建一个新的实例。 |
package com.sjf.bean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
private static ApplicationContext context;
public static void main(String[] args){
context = new AnnotationConfigApplicationContext(SpringConfig.class);
Student student = (Student)context.getBean("yoonaStudent");
student.setName("yoona");
student.setAge(24);
System.out.println(student.toString());
}
}
参考:《Spring实战》
[Spring实战系列](15)使用Spring基于Java的配置
标签:
原文地址:http://blog.csdn.net/sunnyyoona/article/details/50650413