A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 厦门校区 于 2018-7-25 20:18 编辑

同学们,Spring框架是JavaEE框架的核心,Spring全家桶还包括Spring JDBC,Spring Security,Spring Boot,Spring Cloud等等,所以大家要重视Spring的学习。

今日需要掌握的有:
  • 能够用自己的话谈谈对IOC和DI的理解
  • 掌握Spring的属性注入
  • 掌握Spring的注解开发

请同学们按照如上要求,总结你对Spring的理解



7 个回复

倒序浏览
陈强
Spring的第一天;
学习一个新的框架,其实按照之前老师说的思路来走会比较容易去学,那么下面一步一步进行总结
首先是这个spring框架是什么?
官方的说法就是它是一个一站式的轻量级别的框架,简单的说,它就是对一个项目中的所有对象进行的管理的一个框架,目前的理解是这样子,应该还有很多功能会在之后学到.
那么,要会使用,就应该先搭建起一个简单的框架,然后进行测试,看框架的搭建是否成功.
        ===搭建一个简单的spring框架:
                ---导入响应的jar包
                        Beans相关\core相关\context相关\spel相关
                        后期会根据功能的需求在引入响应的依赖包
                ---配置文件的编写
                        一个叫applicationContext.xml的文件
                        注意:需引入配置文件的约束: ---在这个路径下
spring-framework-4.2.4.RELEASE-dist\spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html
然后接下来引入了两个知识点,IOC和DI
IOC就是inversion of controller ----控制反转
它的一个实现原理是,利用配置文件,工厂模式和反射技术来对目标进行解耦合的,简单的理解就是将实例化对象的权利由我们自己转成了spring容器来控制
DI就是dependency injection ----依赖注入
可以对bean中的属性进行简单的赋值,然后还可以做更高大上的是就是把两个有关系的对象进行动态绑定,使用到的是<property>标签中的ref属性
关于bean标签中的name和ID 的一个使用,虽然两个属性都可以用于指定值,但是建议使用id进行一个赋值,因为id的一个唯一性,而name属性的值是可以重复的.但是也有一个局限性,id属性的值的编写规范遵循的是xml的规范,所以不能有特殊的字符,但是name属性就可以包含特殊的字符.
接下来是关于bean的一个作用域的学习:
        Bean的作用域使用到的是bean标签中的scope属性,其值有四种情况:
                ---singleton---单例【默认】,就是说spring IOC容器中只有一个bean实体
                ---prototype---多例,即每一次都会获取到一个新的实体
                ---request---web开发中,存在request域中的
                ---session---web开发中,存在session域中的
===我们比较常用的值就是singleton和prototype
然后有一个关于bean的生命周期的东西,说真的比较没明白整个生命周期是怎么样的,所以暂不做总结,后续对其有更深的理解再整理.
接下来是关于属性注入的知识,
其实总结一下就是有两种方式进行属性的注入,---构造注入和值注入
值注入是采用set方法,所有在一个类中,属性多的时候就会有很多的set方法,但是使用值注入就很灵活方便了,
构造注入就是采用构造方法的方式进行注入的,虽然他只要一个构造方法就可以解决所有的注入问题,但是使用构造方法的话会对类的正常使用有影响,而且当需求变化是,构造方法也要跟着变化,后期的维护成本也相应的增高了
所以总结之后,我们还是采用值注入的方式进行属性的注入.
关于spel表达式的学习,其实跟之前的两种表达式是类似的,跟EL表达式和OGNL表达式比较,只是使用的符号不同
关于spring的注解开发
在运用的过程中没有啥奇怪的问题,就是要搞清楚配置之间的关系就可以了


点评

发表于 2019-7-18 00:02
回复 使用道具 举报
IOC控制反转,所谓控制反转就是对象的创建从使用者,变成spring帮我们创建对象,底层用到的是反射原理
通过读取xml,提取到bean下的class路径,从而生成一个对象值得一提的是这个对象是单例的,所以可以节省很多服务器的空间,另外可以把类统一管理,增加开发的灵活性

DI是指依赖注入,通过ref属性可以把当前类的成员方法成员变量set进另一个类中,还有一种方法是直接通过ref引用注入到类中,比如我操作jdbc需要连接池,那么我需要一个创建连接的c3p0类,类中指定了4个属性和封装后的创建连接操作,那么就可以在xml中配置一个bean ,bean中指定一个名称,jdbc所配置的bean ref这个c3p0类,DI就体现在这,底层同样用到的是反射

AOP
aop切面思想,之前我们使用的都是oop编程,oop编程是类的变量和方法全部挤在一个类中相互不影响对于事务的操作需要在所有的类中使用重复的代码,aop切面思想是可以实现方法或者变量的共享很方面我们的开发

aop底层是通过动态代理(只能代理一个实现了接口的类),还有一个cglib工具(封装了动态代理,不可以用final修饰,可以代理接口,非接口实现类),动态代理通过反射获取类需要传入类名或者类的指定路径(我们在xml的bean路径下的指定路径就是用来给动态代理获取类的),通过反射获得到类的实体对象后就可以用proxy(x,x,x,)方法去获取方法名 根据方法名判断你想要进行的操作,然后看你是要增强还是重写即可,(也就是所谓的通知类型,前置 后置 环绕 异常 最终)
回复 使用道具 举报
许煜 spring五天简单总结
1 IOC:控制反转
说穿了就是将实例化对象这一过程交给spring.在spring的配置文件applicationContext.xml被加载时,spring会将配置文件中的bean对象(注解扫描的对象)初始化到spring容器池中,然后通过依赖注入为这些对象初始化注入属性值.举个小例子:在Controller层私有一个service对象,再通过属性注入将service对象直接注入Controller层.
2 AOP 切面编程
为接口或者实现类创建相对应的代理对象 ,利用代理对象对方法进行增强或者添加功能,举个例子:mybatis创建接口代理对象,接口代理对象直接调用接口方法.
3 SpringJDBC
整合hibernate使用 spring 接管了原本hibernate中的sessionFactory对象的创建 dao层通过继承hibernatedaosuppo以及注入sessionfactory实现原本hibernate实现的内容
4 事务管理
aop思想的具体应用 面向切面编程管理事务

点评

许总牛逼  发表于 2018-7-29 21:22
回复 使用道具 举报
Maven总结二

林瑋


今天的知识点有创建多模块maven工程,依赖管理,私服的安装及使用,还有SVN+maven在项目中的应用.

最为重点的就是创建多模块maven工程了,这个是需要我们掌握的,其他的大多都只是了解一下而已,那多模块maven工程到底是什么呢?
多模块maven工程就是有多个maven功能模块继承同一个父工程,然后我们把对应的功能包拷到对应的功能,由于各个功能包都是会访问实体类的,而我们的功能模块中并没有就需要每一个子模块之间的依赖关系.模块与模块之间的依赖操作很简单,跟我们导包是一样的,工程右键 Maven --> Add Dependen,直接搜模块名或搜maven它的首选就是这些模块. 而这种依赖关系就不用说了,我们天天都在用的;
而说到多模块maven工程必然会有配置文件的拆分,如何拆分配置文件呢?就是那个模块需要配置哪一块就把那一块剪切到对应功能模块也就是工程下的pom.xml里.

接着就是依赖管理,除了(compile,test,provided,runtime的)依赖范围和依赖传递要记一下,剩下的了解.依赖范围不用说了,依赖传递呢,通俗来说就是就是一个父亲喜欢睡觉他有一个儿子也喜欢睡觉,有一个孙子也喜欢睡觉,这其实就跟继承一样,b依赖a,c依赖b,那c下就有a和b.

还有私服,私服其实呢就是另一种意义的中央仓库,只不过中央仓库是由中央仓库的人统一管理的.私服讲真没什么好讲的,因为没有意义;

SVN+Maven的应用,老师说了这个以后在工作中一定会用,就是没用这个也会用GIT,就算没用GIT也会用别的. 先来说说SVN有什么用,它是一个资源库,可以用来签入代码,和签出代码.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马