一铺坞、概念解析#
java配置是通過@Configuration惯悠、@Bean實(shí)現(xiàn)卤材。
@Configuration聲明當(dāng)前類是一個(gè)配置類遮斥,相當(dāng)于一個(gè)Spring的XML配置文件。
@Bean注解到方法上聲明當(dāng)前方法返回值是一個(gè)Bean扇丛。
二术吗、Demo#
1、一個(gè)功能類的Bean
package com.springconfig.test;
public class FunctionService(){
public String printHappy(String UserName){
return UserName+"Happy";
}
}
2帆精、使用功能類的Bean
package com.springconfig.test;
public class UseFunctionService(){
FunctionService functionService;
public void setFunctionService(FunctionService functionService){
this.functionService = functionService;
}
public String printHappy(String UserName){
return functionService.printHappy(UserName);
}
}
3较屿、配置類
//第一種方式
package com.springconfig.test;
@Configuration
public class JavaConfig(){
//聲明這個(gè)方法返回一個(gè)Bean,Bean的名字就是方法名卓练。此處應(yīng)該返回functionService這個(gè)Bean
@Bean
public FunctionService functionService(){
return new FunctionService ();
}
@Bean
public UseFunctionService useFunctionService(){
UseFunctionService useFunctionService = new useFunctionService()隘蝎;
//給useFunctionService 這個(gè)Bean注入functionService()方法返回的Bean
useFunctionService .setFunctionService(functionService())
return useFunctionService;
}
}
//第二種方式
package com.springconfig.test;
@Configuration
public class JavaConfig(){
@Bean
//直接將FunctionService 這個(gè)Bean作為參數(shù)傳入useFunctionService()方法
public UseFunctionService useFunctionService(FunctionService functionService){
UseFunctionService useFunctionService = new useFunctionService();
//注入functionService這個(gè)Bean
useFunctionService .setFunctionService(functionService)
return useFunctionService;
}
}
4襟企、Main啟動類
package com.springconfig.test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main(){
public static void main(String[] args){
//使用Spring AnnotationConfigApplicationContext容器讀取Config這個(gè)配置類
AnnotationConfigApplicationContext comtext = new AnnotationConfigApplicationContext(JavaConfig.class);
//獲取context容器中的實(shí)例化Bean UseFunctionService
UseFunctionService useFunctionService = context.getBean(UseFunctionService.class);
system.out.println(useFunctionService.printHappy("冉玉琦"));
context.close();
}
}