从IOC容器获取Bean & name和id的区别


两种方式,推荐使用第一种

public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        Apple apple4 = context.getBean("apple4", Apple.class);
        System.out.println(apple4.getTitle());
        Apple apple3 = (Apple) context.getBean("apple3");
        System.out.println(apple3.getOrigin());
    }
}

id和name的相同点:

 1.都是设置对象在IOC容器中的唯一标识

 2.两者在同一配置文件中都不允许出现重复

 3.两者允许在多个配置文件中出现重复,新对象覆盖旧对象

 4.都要使用驼峰命名法

id和name的区别:

 1.id一次只能定义一个对象标识,推荐使用id

 2.name一次能定义多个对象标识

当一个bean既没有id也没有name时,使用类名全称作为bean标识

<bean class="com.example.s02.ioc.entity.Apple">
        <constructor-arg name="title" value="红富士">constructor-arg>
        <constructor-arg name="color" value="红色">constructor-arg>
        <constructor-arg name="origin" value="欧洲">constructor-arg>
        <constructor-arg name="price" value="18.5">constructor-arg>
    bean>
public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
        Apple apple = context.getBean("com.example.s02.ioc.entity.Apple", Apple.class);
        System.out.println(apple);
    }
}