2014-11-18 2 views
0
public class B { 

    public B(){ 
     System.out.println("B is created"); 
    } 

    public void print(){ 
     System.out.println("hello b"); 
    } 

} 

учащегося B.javaавтоматическое связывание весной (имя свойства и имя боба должно быть таким же)

public class A { 

    B c; 
    public A(){ 

     System.out.println("a is created"); 
    } 

    public B getB(){ 
     return c; 
    } 

    public void setB(B c){ 
    this.c =c; 
    } 

    void print(){ 
     System.out.println("hello a"); 
    } 

    void display(){ 
     print(); 

     c.print(); 
    } 
} 

учащегося A.java

<?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:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> 
<bean id="b" class="B"></bean> 

<bean id="a" class="A" autowire="byName"></bean> 

</beans> 

applicationContext.xml

import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
public class Test { 
public static void main(String[] args) { 
     ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml"); 

     A a1 = context.getBean("a",A.class); 
     a1.display(); 

    } 
} 

Тест .java

Я проходил обучение по автоустановке весной, используя режим «byName». и он говорит: Режим byName вводит зависимость объекта в зависимости от имени компонента. В этом случае имя свойства и имя компонента должны быть одинаковыми. Он внутренне вызывает метод setter.

, но в этом приложении имя свойства и имя бина оба разные, но все еще работает нормально, так как работает эта автоустановка, хотя оба имени разные?

+0

есть вопросы? .. в любом случае работает отлично, потому что у вас в классе A есть метод setB, который неявный способ для свойства с именем b. – Xstian

ответ

1

В нем указано название объекта, а не название поля.

Идентификатор свойства в этом случае выводится из имени метода setter, как определено в соглашении об именах JavaBeans (->b), поэтому имя свойства и имя компонента совпадают.

+0

wait axtavt, поэтому это означает, что соглашение об именах должно соответствовать не точным словам имени свойства и имени компонента? –

+0

[Соглашения об именах JavaBeans] (http://en.wikipedia.org/wiki/JavaBeans#JavaBean_conventions) связывают имя свойства с именем этого свойства. Таким образом, в вашем случае имя свойства происходит от имени сеттера. – axtavt

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