【问题标题】:Regarding java based Spring Configuration: How to use bean generated in one of my dependency in my project关于基于 java 的 Spring 配置:如何在我的项目中使用我的依赖项之一生成的 bean
【发布时间】:2012-05-29 20:23:39
【问题描述】:

我对使用另一个项目生成的 bean 有疑问。更详细:

我有一个项目A如下

public A {
public void print()
{
System.out.println("Hello World");
}
}

配置类如下

@Configuration
public class AConfig {  
@Bean
public A a()
{
    A bean = new A();
    return A;
}
}

现在我有一个新项目 B,其类如下

public B {
A a;
public setA()
{
this.a = a;
}
public static void main(String[] args)  
{ 
System.out.println(a.print());
}
}

B 的配置类如下

@Configuration
@Import(AConfig.class)
public BConfig
{
@Bean
public B b()
{
B bean = new B();
**b.setA(a());-----------------This is not correct. How can i get Instance of class A NOw????**
}
}

谢谢

【问题讨论】:

    标签: java spring spring-mvc spring-security spring-roo


    【解决方案1】:

    合并@Configuration

    如果 bean 是紧耦合的,只需将它们放在同一个类中:

    @Configuration
    public class AConfig {  
        @Bean
        public A a() {
            return new A();
        }
    
        @Bean
        public B b() {
            B b = new B();
            b.setA(a());
            return b;
        }
    }
    

    注入另一个@Configuration

    @Configuration 类只是 Spring 中 bean 的一个特例:

    @Configuration
    public class BConfig {  
    
        @Autowired
        private AConfig aConfig;
    
        @Bean
        public B b() {
            B b = new B();
            b.setA(aConfig.a());
            return b;
        }
    }
    

    将依赖注入@Configuration

    @Configuration
    @Import(AConfig.class)
    public class BConfig {  
    
        @Autowired
        private A a;
    
        @Bean
        public B b() {
            B b = new B();
            b.setA(a);
            return b;
        }
    }
    

    【讨论】:

    • 非常感谢您的多个回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多