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

    }
}

【运行结果】

这里写图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值