spring的最初两大核心思想:控制反转IoC,依赖注入DI(后来引入第三个核心思想:AOP面向切面编程)。

 

简单地说:就是我们把创建、维护、销毁对象的工作交给了spring。通过控制反转spring获得了创建,维护,销毁对象的权力;通过依赖注入我们规定了那些类可以“注”给spring使用。

 

具体点说:需要配置文件比如:spring.xml 和注解@Service(value="userService") 配合。

比如:配置文件的作用之一就是扫描指定包:

<context:component-scan  base-package="shopping.dao,shopping.service" /> <!-- 扫描dao和service包下的所有类 -->

(为什么通过配置文件可以获取userService对象??)(为什么还要注解呢?既然都已经按照配置文件扫描指定包所有类了,并且@Service注解的类默认对象名是类名首字母小写,为什么不能省略注解,只要扫描了制定的包,包下所有类的对象名也是有规则自动生成了啊!!为什么还要注解。)

比如:注解的作用之一就是起名字,不同层不同注解相同的作用目的也就是为了区别“层”的吧

@Service(value="userService")

总而言之通过依赖注入(配置文件扫描,注解“起别名”),spring就可以控制反转IoC了:

AbstractApplicationContext ac = new ClassPathXmlApplicationContext(new String[]{"classpath:spring.xml"});   获取资源文件夹【rsources】中的spring.xml配置文件。

ac.getBean("userSerivice");    spring通过getBean创建对象

ac.close();      spring销毁对象

10-07 15:49