Java配置管理
Java配置类,常用的注解(Annotation):
@Configuration:用于修饰一个Java配置类
@Bean:修饰一个方法,返回值定义成容器的一个Bean
@Value:修饰一个Field,用于为该Field(域)配置一个值
@Import:修饰一个Java配置类,用于向当前配置类导入其他Java配置类
@Scope:修饰一个方法,指定该方法对应的Bean生命域
@Lazy:修饰一个方法。指定该方法对应的Bean是否需要延迟初始化
@DependsOn:修饰一个方法,在初始化该方法对应的Bean执勤啊初始化指定的Bean
Annotation的出现是为了简化Spring的XML配置文件,但Annotation不如XML强大,所以无法完全取代XMl文件。
实例:
package gzy;
import interfaces.Person;
public class Chinese implements Person{
private Sports sports;
private String name;
public void setSports(Sports sports){
this.sports=sports;
}
public void setName(String name){
this.name=name;
}
public void useDo(){
System.out.println("I am "+name+",and I'm "+sports.doing());
}
}
package gzy;
public class Sports {
public String doing(){
return "swimming!";
}
}
Java配置文件:
package gzy;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import interfaces.Person;
@Configuration
public class AppConfig {
@Value("hhh")String personName;
@Bean(name="chinese")
public Person person(){
Chinese p=new Chinese();
p.setSports(new Sports() );
p.setName(personName);
return p;
}
}
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import gzy.Chinese;
public class SpringTest {
public static void main(String[]args){
ApplicationContext ctx=
new AnnotationConfigApplicationContext(gzy.AppConfig.class);
Chinese c=ctx.getBean(Chinese.class);
c.useDo();
}
}
Output:
I am hhh,and I'm swimming!
在实际的项目中可能会混合使用XMl配置和Java类配置,
(1)以XML为主,Java类配置为辅:
<bean class="*.AppConfig"/>
(2)以Java类配置为主,XML为辅:
@Configuration
@ImportResource("classpath:/beans.xml")
public class Config{
····
}