前言:看了B站黑马程序员,狂神说JAVA,个人觉得还是狂神讲的更加细致,现记录自己的学习过程
一、Spring是一个框架,是为了让现有的技术更加容易使用,本身就是一个大杂烩,整合了现有的技术框架。
优点:Spring是一个开源的免费的框架(容器)!
Spring是一个轻量级的,非入侵式的框架
控制反转(IOC),面向切面编程(AOP)
总结:Spring是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。
二、控制反转:
控制:谁来控制对象的创建,传统应用程序的对象是由程序本身控制创建的,使用Spring后,对象是由Spring来创建的。
反转:程序本身不创建对象,而变成被动的接收对象
依赖注入:就是利用set方法来进行注入的。
IOC是一种变成思想,由主动的编程变成被动的接收。
Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。 采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。 所谓的IOC,就是由Spring来创建,管理,装配 Java语法:类型 变量名 new 类型();
Hello hello = new Hello();
现在只要在xml配置文件中配置即可
id = 变量名
class = new的对象
<bean id ="hello" class="com.icecream.Hello">
<property name="str" value="Spring”>
</bean>
</beans>
三、IOC创建对象的方式
1.使用无参构造创建对象,默认方式
2.假设我们需要使用有参构造创建对象。
1.下标赋值
<bean id ="user" class="com.icecream.user"> <constructor-arg index="0" value="java学习"/></bean>
2.通过类型创建,但是不建议使用
<bean id ="user" class="com.icecream.user"> <constructor-arg type="java.lang.string" value="java学习1"/></bean>
3.通过参数名创建
<bean id ="user" class="com.icecream.user"> <constructor-arg name="name" value="java学习2"/></bean>
总结:在配置文件加载的时候,容器中管理的对象就已经初始化了。
四、spring配置
1.别名:
alias=""即可
如
<alias name="user" alias="userNwe"/>
2.
id:bean的唯一标识符,也就是相当于我们之前java中学的对象名
class:bean对象所对应的全限定名,:包名+类型
name:也是别名
import,一般用于团队开发使用,他可以将多个配置文件,导入合并为一个总的
<import resource ="bean.xml"/> <import resource ="bean2.xml"/> <import resource ="bean3.xml"/>
使用的时候使用总的配置就行了
五、依赖注入
1.构造器注入
2.Set 注入 (重点)
见:https://blog.csdn.net/qq_33369905/article/details/106647271?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165260651916781432989642%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165260651916781432989642&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-106647271-null-null.nonecase&utm_term=IOC&spm=1018.2226.3001.4450
参考文档:https://blog.csdn.net/qq_33369905/article/details/106647330?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165260651916781432989642%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165260651916781432989642&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-106647330-null-null.nonecase&utm_term=IOC&spm=1018.2226.3001.4450
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。