Spring基础配置 - Java配置

1.2 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 、@Controlle )。
本节只演示简单的Java 自己置,全书各个章节都会有大量的Java 配置的内容。

1.2.1 示例
(1) 编写功能类的Bean
package com.discry.springboot_in_action.repositories;

public class UserRepository {
    public String saveUser(String username) {
        return "save user ..." + username;
    }
}

代码解释
①此处没有使用@Service 声明Bean

(2)使用功能类的Bean
package com.discry.springboot_in_action.services;

import com.discry.springboot_in_action.repositories.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

//1
public class UserService {
    //2
    private UserRepository userRepository;

    public UserService() {
    }

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void saveUser(String username) {
        System.out.println(userRepository.saveUser(username));
    }
}

代码解释
①此处没有使用@Service 声明Bean
②此处没有使用@Autowired 注解注入Bean

(3)配置类
package com.discry.springboot_in_action.configs;

import com.discry.springboot_in_action.repositories.UserRepository;
import com.discry.springboot_in_action.services.UserService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Java方式配置Bean
 */
@Configuration
public class JavaConfig {
    @Bean
    public UserRepository userRepository(){
        return new UserRepository();
    }
    @Bean
    public UserService userService(){
        return new UserService(new UserRepository());
    }
}
(4)运行
package com.discry.springboot_in_action;

import com.discry.springboot_in_action.configs.AOPConfig;
import com.discry.springboot_in_action.configs.AnnotationConfig;
import com.discry.springboot_in_action.configs.JavaConfig;
import com.discry.springboot_in_action.services.DemoAnnotationService;
import com.discry.springboot_in_action.services.DemoMethodService;
import com.discry.springboot_in_action.services.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootInActionApplicationTests {

	@Test
	public void testJavaConfig(){
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
		UserService userService = context.getBean(UserService.class);
		userService.saveUser("小番茄");
		context.close();
	}

结果如图所示:

转载于:https://my.oschina.net/discry/blog/1529617

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值