02-SpringBoot——Spring基础-Java配置

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();

    }
}

【运行结果】

02-SpringBoot——Spring基础-Java配置_第1张图片

你可能感兴趣的:(Spring,Boot,&,Spring,Cloud,SpringBoot教程)