一、基础详解
java配置是通过@Configuration与@Bean来实现的。
1、@Configuration声明当前类是一个配置类,相当于一个spring配置的xml
2、@Bean注解在方法上,声明当前方法的返回值为一个Bean.
我们的主要原则是:全局配置使用java配置(如数据库相关配置、MVC相关配置),业务使用注解配置(
@Component组件,没有明确的角色
@Service在业务逻辑层(service层)使用
@Repository在数据访问层(dao层)使用
@Controller在展示层(MVC-Spring MVC)使用)
二、示例
//编写功能类的bean,此处没有使用@Service声明bean
package service.javaConfig;
public class FunService {
public String sayHello(String word){
return "Hello "+" "+word;
}
}
//使用功能类的bean,此处没有使用@Service声明bean
package service.javaConfig;
public class UseFunService {
//此处没有使用@Autowired注入bean
FunService funService;
public void setFunService(FunService funService) {
this.funService = funService;
}
public String sayHello(String word){
return funService.sayHello(word);
}
}
//配置类bean
package service.javaConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
//使用@Configuration表明当前类是配置类,这意味着可能有0或者多个@Bean注解,此处没有使用包扫描,因为所有bean都在此类中定义了
public class JavaConfig {
@Bean
//使用bean注解声明此方法,返回值是一个bean,bean的名称为方法名
public FunService funService(){
return new FunService();
}
@Bean
//使用bean注解声明此方法,返回值是一个bean,bean的名称为方法名
public UseFunService useFunService(){
UseFunService useFunService=new UseFunService();
useFunService.setFunService(funService());
return useFunService;
}
}
//测试类
package service.javaConfig;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class JavaConfigTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(JavaConfig.class);
UseFunService useFunService=context.getBean(UseFunService.class);
System.out.println(useFunService.sayHello("java Config"));
context.close();
}
}