Spring XML-configuration replacement task

Viewed 23

I have three bean definitions of the same class in context.xml:

<bean id="autowiredTargetBeanByName" autowire="byName"
      class="spring.core.task.examples.AutowiredTargetBean" lazy-init="true"/>
<bean id="autowiredTargetBeanByType" autowire="byType"
      class="spring.core.task.examples.AutowiredTargetBean" lazy-init="true"/>
<bean id="autowiredTargetBeanConstructor" autowire="constructor"
      class="spring.core.task.examples.AutowiredTargetBean" lazy-init="true"/>

The AutowiredTargetBean class is:

public class AutowiredTargetBean {
    private DependencyBean dependencyOne;
    private DependencyBean dependencyTwo;
    private AddDependencyBean addDependency;

    public AutowiredTargetBean() {
        System.out.println("Constructor without params");
    }

    public AutowiredTargetBean(DependencyBean dependencyTwo,
                               AddDependencyBean addDependency) {
        this.dependencyTwo = dependencyTwo;
        this.addDependency = addDependency;
        System.out.println("Constructor with params autowiring");
    }

    public void setDependencyOne(DependencyBean dependencyOne) {
        this.dependencyOne = dependencyOne;
    }

    public void setDependencyTwo(DependencyBean dependencyTwo) {
        this.dependencyTwo = dependencyTwo;
    }

    public void setAddDependency(AddDependencyBean addDependency) {
        this.addDependency = addDependency;
    }

    public DependencyBean getDependencyOne() {
        return dependencyOne;
    }

    public DependencyBean getDependencyTwo() {
        return dependencyTwo;
    }

    public AddDependencyBean getAddDependency() {
        return addDependency;
    }

    @Override
    public String toString() {
        return "AutowiredTargetBean{" +
                "dependencyOne=" + dependencyOne +
                ", dependencyTwo=" + dependencyTwo +
                ", addDependency=" + addDependency +
                '}';
    }
}

Main function contains:

System.out.println("\nByName autowiring: ");
targetBean = (AutowiredTargetBean) context.getBean("autowiredTargetBeanByName");
System.out.println(targetBean);

System.out.println("\nByType autowiring: ");
targetBean = (AutowiredTargetBean) context.getBean("autowiredTargetBeanByType");
System.out.println(targetBean);

System.out.println("\nConstructor autowiring: ");
targetBean = (AutowiredTargetBean) context.getBean("autowiredTargetBeanConstructor");
System.out.println(targetBean);

Output:

ByName autowiring:
Constructor without params
AutowiredTargetBean{dependencyOne=null, dependencyTwo=null, addDependency=null}

ByType autowiring:
Constructor without params
AutowiredTargetBean{dependencyOne=spring.core.task.pojo.DependencyBean@54107f42, dependencyTwo=spring.core.task.pojo.DependencyBean@54107f42, addDependency=spring.core.task.pojo.AddDependencyBean@1b11ef33}

Constructor autowiring:
Constructor with params autowiring
AutowiredTargetBean{dependencyOne=null, dependencyTwo=spring.core.task.pojo.DependencyBean@54107f42, addDependency=spring.core.task.pojo.AddDependencyBean@1b11ef33}

Attribute autowire in the bean tag is working successfully. I mean, after launching my spring application I get three differently initialized beans. How can I replace this on Spring Java configuration using @Configuration and other Spring core annotations (such as @Autowire, @Qualifier, @Lazy, and others)?

0 Answers
Related