2015-08-17 2 views
1

КлассВесной, аннотация и xml должны использоваться вместе?

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?

Значит, аннотация и xml должны использоваться вместе? Благодаря

+2

Нет, вы можете использовать аннотации, XML или оба. – Kayaman

+0

Хорошо, если я хочу использовать только аннотацию, как я могу это сделать? – Dave

+2

Я рекомендую внимательно изучить документацию, а также Google. Это слишком широкий вопрос, чтобы получить правильный ответ здесь (это также сильно зависит от того, что вы делаете и используете). Термин «java config» используется часто, когда речь идет о настройке на основе аннотации с помощью Spring. – Kayaman

ответ

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); 
    } 
} 

Для получения дополнительной информации см пружинных документов

Смежные вопросы