02-SpringBoot——Spring基础-Java配置
【博文目录>>>】
【项目源码>>>】
【Java配置】
Java 配置是Spring 4.x 推荐的配置方式,可以完全替代xml 配置: Java 配置也是Spring Boot推荐的配置方式。
Java 配置是通过@Configuration 和@Bean 来实现的。
@Configuration 声明当前类是一个配置类,相当于一个Spring 配置的xml 文件。
@Bean 注解在方法上,声明当前方法的返回值为一个Bean
可以混合使用Java 配置和注解配置。何时使用Java 配置或者注解配置?主要的原则是:全局配置使用Java 配置(如数据库相关配置、MVC 相关配配置),业务Bean 的配置使用注解配置(@Service 、@Component、@Repository 、@Controller )。
package com.example.spring.framework.javaconfig;
import org.springframework.stereotype.Service;
/**
* 使用@Service注解声明当前FunctionService 类是Spring 管理的一个Beano 其中,使
* 用@Component、@Service、@Repository和@Controller 是等效的,可根据需要选用。
*
* Author: 王俊超
* Date: 2017-07-10 08:01
* All Rights Reserved !!!
*/
@Service
public class FunctionService {
public String sayHello(String word) {
return "Hello " + word + " !";
}
}
package com.example.spring.framework.javaconfig;
/**
* Author: 王俊超
* Date: 2017-07-10 08:03
* All Rights Reserved !!!
*/
public class UseFunctionService {
FunctionService functionService;
public void setFunctionService(FunctionService functionService) {
this.functionService = functionService;
}
public String SayHello(String word) {
return functionService.sayHello(word);
}
}
package com.example.spring.framework.javaconfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 1、@Configuration 声明当前类是一个配置类
* 2、@Bean将方法的返回值当作一个bean,bean的名称就是返回值的名称
* 3、使用手动注入
* 4、使用容器自动注入
*
* Author: 王俊超
* Date: 2017-07-10 08:20
* All Rights Reserved !!!
*/
@Configuration // 1
public class JavaConfig {
@Bean // 2
public FunctionService functionService() {
return new FunctionService();
}
@Bean
public UseFunctionService useFunctionService() {
UseFunctionService useFunctionService = new UseFunctionService();
useFunctionService.setFunctionService(functionService()); // 3
return useFunctionService;
}
@Bean
public UseFunctionService useFunctionService2(FunctionService functionService) {// 4
UseFunctionService useFunctionService = new UseFunctionService();
useFunctionService.setFunctionService(functionService);
return useFunctionService;
}
}
package com.example.spring.framework.javaconfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
/**
* Author: 王俊超
* Date: 2017-07-10 08:21
* All Rights Reserved !!!
*/
public class Main {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(JavaConfig.class);
// 获取第一个bean
UseFunctionService useFunctionService = context.getBean("useFunctionService",
UseFunctionService.class);
System.out.println(useFunctionService.SayHello("java config"));
// 获取第二个bean
UseFunctionService useFunctionService2 = context.getBean("useFunctionService2",
UseFunctionService.class);
System.out.println(useFunctionService2.SayHello("java config2"));
context.close();
}
}