Java配置也是Spring4.0推薦的配置方式,完全可以取代XML的配置方式,也是SpringBoot推薦的方式。
Java配置是通過@Configuation和@Bean來實現的:
1、@Configuation注解,說明此類是配置類,相當於Spring的XML方式
2、@Bean注解,注解在方法上,當前方法返回的是一個Bean
eg:
此類沒有使用@Service等注解方式
1 package com.wisely.heighlight_spring4.ch1.javaconfig; 2 3 public class FunctionService { 4 public String sayHello(String world) { 5 return "Hello " + world + "!"; 6 } 7 }
此類沒有使用@Service注解lei,也沒有使用@Autowire注入Bean
1 package com.wisely.heighlight_spring4.ch1.javaconfig; 2 3 public class UseFunctionService { 4 5 FunctionService functionService; 6 7 public void setFunctionService(FunctionService functionService) { 8 this.functionService = functionService; 9 } 10 11 public String SayHello(String world) { 12 return functionService.sayHello(world); 13 } 14 }
1、使用@Configuation注解說明此類是一個配置類
2、使用@Bean注解的方式注解在方法上,返回一個實體Bean,Bean的名稱是方法名。
3、注入FunctionService的Bean的時候,可以直接使用functionService方法。
4、注解將functionService作為參數直接傳入UseFunctionService。在spring容器中,只要在容器中存在一個Bean,就可已在另一個Bean的聲明方法的參數中直接使用。
1 package com.wisely.heighlight_spring4.ch1.javaconfig; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.Configuration; 5 6 @Configuration 7 public class JavaConfig { 8 @Bean 9 public FunctionService functionService() { 10 return new FunctionService(); 11 } 12 13 @Bean 14 public UseFunctionService useFunctionService() { 15 UseFunctionService useFunctionService = new UseFunctionService(); 16 useFunctionService.setFunctionService(functionService()); 17 return useFunctionService; 18 } 19 20 @Bean 21 public UseFunctionService useFunctionService(FunctionService functionService) { 22 UseFunctionService useFunctionService = new UseFunctionService(); 23 useFunctionService.setFunctionService(functionService); 24 return useFunctionService; 25 } 26 }
測試類:
1 package com.wisely.heighlight_spring4.ch1.javaconfig; 2 3 import org.springframework.context.annotation.AnnotationConfigApplicationContext; 4 5 public class Main { 6 public static void main(String[] args) { 7 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class); 8 UseFunctionService useFunctionService = context.getBean(UseFunctionService.class); 9 System.out.println(useFunctionService.SayHello("java config")); 10 context.close(); 11 } 12 }