一、何为Java框架?不了解。那么就从最简单的概念入手吧。个人理解,框架就是多个可重用模块的集合,形成一个某个领域的整体解决方案。而spring就是常用的框架之一。Spring又是个什么东西呢?spring是一个IOC(DI)和AOP容器(管理所有的组件(具有功能的类))框架。下面重点总结IOC。
二、IOC,Inversion(反转)Of
Control:控制反转;控制:资源的获取方式;
主动式:要什么资源自己创建:
被动式:资源获取不是我们自己创建,交给一个容器来创建和设置;
三、容器:管理所有的组件(有功能的类);容器最强大的地方在于将资源的主动获取变为被动接收。
四、DI:Dependency Injection依赖注入;容器能知道哪个组件(类)运行的时候,需要另外一个类(组件);容器通过反射的形式,将容器中准备好的BookService对象注入(利用反射给属性赋值)到目的组件BookServlct中。换句话就是说只要容器管理的组件,都能使用容器提高的强大功能。
五、在建Java工程时需要注意,导包后要手动把每个jar找到build path按钮添加到工程中,web项目会自动添加所以不需要。
六、如何在容器注册一个对象并给对象属性赋值?在Java工程中创建一个xml文件,在xml文件中通过配置来获取需要的对象。例如,注册一个Person对象,spring会自动创建这个person对象。
1.一个bean标签可以注册一个组件(对象、类)2.class:写要注册的组件的全类名
3.id:这个对象的唯一标识。4.容器中对象的创建在容器创建完成的时候就已经创建好了5.同一个组件在ioc容器中是单例的,容器启动完成就已经创建装备好的。6.ioc在创建组件对象的时候,property会利用setter方法为JavaBean的属性赋值。7.JavaBean的属性名有什么决定?getter和setter方法是属性名;set去掉后面那一串首字母小写就是属性名。
七、
打印结果:person中的car,Car[carName=特斯拉,price=77万+,color=粉色]
八、我们都知道bean的作用域默认是单实例的,而scope属性可以改变bean的作用域。
1.Scope=“prototype”:多实例的:1.1容器启动默认不会创建多实例bean。1.2获取的时候创建这个bean。1.3每次获取都会创建一个新的对象。2.scope=“singleton”:2.1在容器启动完成之前就已经创建好对象,保存在容器中了。2.2任何获取都是获取之前创建好的那个对象。
九、${key}:动态取出配置文件中某个key对应的值:
<property name=”xxx” value=” ${jdbc.driverClass}”></
property >
十、1.autowire=“default/no”:不自动装配。2.按照某些规则自动装配:autowire=“byName”
autowire=“byType” autowire=“constructor”
十一、注解。通过给bean上添加某些注解,可以快速的将bean加入到ioc容器中某个类上添加任何一个注解都能快速地将这个组件加入到ioc容器的管理中。Spring四大注解:@controller、@Service、@respository、@Component.使用注解前需要扫描用到注解的包
<context:component-scan
base-package=“com.ch”></context:component-scan>
十二、DI(依赖注入):使用@Autowired注解实现根据类型实现自动装配。
十三、泛型依赖注入关系图:
最后,整体总结IOC。IOC是一个容器,帮程序员管理所有的组件:
-
依赖注入:@Autowired;自动赋值。
-
某个组件要使用spring提供的更多(IOC、AOP)必须加入到容器中。
-
容器启动,创建所有单实例bean。
-
Autowired自动装配的时候,是从容器中找这些符合要求的bean。
-
容器中包含了所有的bean。