在Spring中,注释和xml必须一起使用?

时间:2015-08-17 10:57:25

标签: java xml spring annotations

一个班级

public class A {

    private String name;

    public A() {
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

BeanFactory类

public class BeanFactory implements InitializingBean, DisposableBean{

    private A a;

    public BeanFactory(){

    }

    public BeanFactory(A a){
        this.a = a;
    }

    public void printAName(){
        System.out.println("Class BeanFactory: beanFactory.printAName -> a.getName() = " + a.getName());

    }       

}

主要

public class Main {
    public static void main(String[] args) {
        AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                "ApplicationContext.xml");

        BeanFactory beanFactory = applicationContext.getBean("beanFactory",
                BeanFactory.class);

        beanFactory.printAName();
    }
}

的ApplicationContext

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

    <context:annotation-config />

    <bean id="beanFactory" class="testSpring.BeanFactory">
        <constructor-arg ref="a1"/>
    </bean>

    <bean id="a1" class="testSpring.A">
        <property name="name" value="I am A!"></property>
    </bean>

</beans>

投放结果 Class BeanFactory: beanFactory.printAName -> a.getName() = I am A!

就像你可以看到的,这里我没有使用没有注释。但是代码的工作原理归功于xml文件。

  1. 所以xml不需要注释..?我可以使用其中一种吗?

  2. 如果我在本应用程序中使用注释(例如@Autowired)而不是bean xml,那么它可能吗?你能告诉我怎么样吗?

  3. 或者注释必须要求xml参考?

  4. 那么..注释和xml必须一起使用?感谢

1 个答案:

答案 0 :(得分:0)

您应该使用注释配置,这是一个想法

@Component
class Bean1 {
    public Bean1() {
        System.out.println(getClass());
    }
}


@Configuration
@ComponentScan("test")
public class Config {

    public static void main(String[] args) {
        ApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
    }
}

有关详细信息,请参阅Spring文档