springbeans创建不同的注解

snz8szmq  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(288)

我有这样一个bean配置:

@Bean(NAME)  
@ConfigurationProperties(PROPS)  
public SomeBean getSomeBean(@Qualifier(QUALIFIER) X x) {  
    return new SomeBean(x);  
}

有许多类具有相同的配置,但常量不同(名称、道具、限定符)。我考虑过从构造函数(初始化常量字段)或重写的方法传递它们,但这不起作用,因为注解只需要常量。
有没有办法创建一个类似基类的东西并共享这个bean初始化,只传递特定的常量?

k97glaaz

k97glaaz1#

为了提高可重用性和最小化开发工作量,spring支持bean定义继承。
下面的示例代码解释了该过程。在java配置文件中写入

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
    @Bean
    public Employee employee() {
        Employee employee = new Employee();
        initCompany(employee);
        employee.setLocation("XYZ");
        return employee;
    }
    private void initCompany(Company company) {
        company.setName("abc");
        company.setAge(30);
    }
}

在主类中运行write

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class SpringDemo {

    public static void main(String[] args) {

        AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
        ctx.register(AppConfig.class);
        ctx.refresh();
        Employee employee = ctx.getBean(Employee.class);
        System.out.println(employee.getName());
        System.out.println(employee.getLocation());
        System.out.println(employee.getAge());
            ctx.registerShutdownHook();
    }
} 

Output
abc 
  XYZ
  30

相关问题