Java/Spring/ClassPathXmlApplicationContext

Материал из Java эксперт
Перейти к: навигация, поиск

Load config file from ClassPath

       
File: context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package="bean"/>
</beans>

File: Main.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
  public static void main(String[] args) throws Exception {
    ApplicationContext ac = new ClassPathXmlApplicationContext("context.xml");
    System.out.println(ac.getBean("simplestBean"));
  }
}
File: Magic.java
package bean;

public @interface Magic {
}

File: MarkedBean.java
package bean;

public class MarkedBean implements ComponentMarker {
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("MarkedBean");
        sb.append("{}");
        return sb.toString();
    }
}

File: SimpleBean.java
package bean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.ruponent;
import org.springframework.util.ObjectUtils;
/**
 * @author janm
 */
@Magic
class SimpleBean {
    private Dependency dependency;
    @Autowired(required = true)
    public void setDependency(Dependency dependency) {
        this.dependency = dependency;
    }
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("SimpleBean");
        sb.append(ObjectUtils.identityToString(this));
        sb.append("{dependency=").append(dependency);
        sb.append("}");
        return sb.toString();
    }
}
@Component
class Dependency {
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("Dependency");
        sb.append(ObjectUtils.identityToString(this));
        sb.append("{}");
        return sb.toString();
    }
}

File: SimplestBean.java
package bean;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.ruponent;
/**
 * @author janm
 */
@Component("simplestBean")
@Scope("prototype")
public class SimplestBean {
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder();
        sb.append("SimplestBean");
        sb.append("{}");
        return sb.toString();
    }
}

File: ComponentMarker.java
package bean;

public interface ComponentMarker {
}