欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring基础配置 - Java配置

程序员文章站 2022-06-12 19:10:46
...

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

结果如图所示:

Spring基础配置 - Java配置

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