.net转java 学习笔记 (五) ssh框架( struts spring hibernate )中的 spring

本章主要是先了解一下Spring和它的几个组成部分的概念,后面的才会创建第一个spring程序  

很多.net的兄弟会发现,其实java和.net差不多,无非是开发工具不一样,

  之前已经学习java环境的搭建(JDK,JRE,Eclipse的安装和配置):https://www.cnblogs.com/kimizhou/p/9364647.html

  用eclipse开发 第一个helloword程序:  https://www.cnblogs.com/kimizhou/p/9713732.html

  用eclipse开发 第一个jdbc程序(连接数据库程序)  https://www.cnblogs.com/kimizhou/p/9714658.html

  其实转 java的难点,就在他的框架上,spring 想要学习完,几乎是不可能的,那么spring它究竟是什么呢?

 spring是一个开源框架, 也是java的一个主流框架,Spring框架的本质就是通过XML配置来驱动Java代码,这样把原本有Java代码管理的组件之间的耦合关系,提取到了XML中。这样就方便了日后的升级和维护。

 不错就是XML,疯狂的配置XML....跟.net不一样的是. net简单到根本无需配置,要学好spring其实就是学习别人的一种套路,可以说是一种设计模式,类似工厂之类的。

你需要知道一些专业名词,OOP (面向对象设计),AOP(面向切面设计),DI(依赖注入,看到依赖注入不要怕,并不难理解,你理解为:就是一个带参的方法就好了,无非这个方法对参数存在依赖性而已).  欢迎大家加我QQ10200454  和我一起学习和讨论.net转java的经验

由于我讲spring不会讲的太细,所以我有一个比较好的pdf 专门讲spring的,“Spring实战(第4版).pdf ”   想学的细一点的可以看看这个文档

链接:https://pan.baidu.com/s/11Zqc522jbeOm4mfKHFz4yg 密码:glwn

废话了那么多,我们直接开始学习spring吧! 

 


 

1:关于Spring中的DI依赖注入:

DI依赖注入就是先new出来,再调用方法;至于new出什么?调用什么方法?他们之间是怎么装配的?spring 把这些关系写到了xml中,那么这个写入xml的过程,就叫做spring的配置,Spring通过 它的配置,也就是xml,能够了解这些组成部分是如何装配起来的。你可以通过修改xml,来修改装配的内容;饶了这么久,你晕了吗?就是new谁,调用谁,都是通过xml来配置;学过.net的你是不是觉得很操蛋? 简单无比的东西变得更加复杂了,我也是这么觉得。这就是java为什么那么牛逼的原因了!它能把小型项目做成巨型项目!这个特性是无敌的!!.net 1小时的工作量,java甚至可能可以要到比这多好几倍甚至上几十倍几百倍的时间,.net一个人要做好几个人的事情,而java每次copy一下改一改提交就结束了,工资还高很多 。。。都怪vs太强大.宇宙第一ide.sorry,我扯远...下面继续学习spring!

 


 

2:关于 aop,面向切面设计:

AOP, acpect oriented  programming 面向切面设计,它能够把 各处的功能 分离出来形成可重用的组件。

比如说安全、日志、事务这些功能在各个模块中都有用到,如果你把他们抽出来,其他模块只是调用它的方法。但方法的调用还是会重复出现在各个模块中;

AOP可以将安全、事务和日志这些与核心业务逻辑相分离。

既然apo在spring中出现,所以这些配置...没错!就是在xml中。做好被xml的海洋淹没的准备了吗?

下面有个截图,大家不用着急,看不懂没关系,怎么来的不知道也没关系,只要知道有这么个东西就好了,先了解下;后面再给大家详细介绍就好了;

上面的di,就是配置了一些类,它的装配关系是什么

上面aop,也是一些配置,其实就是说明再执行embark之前和之后会统一调用什么方法,说白了,.net抽出公用方法,在各个模块中调用,java的spring的aop就是抽出,然后写在配置文件中,然后在各个模块指定的xml配置文件中配置。其实更麻烦更复杂。。你觉得呢?

 


 

3:关于Spring中的模板

Spring中有很多模板,比如说 Spring的JdbcTemplate,你使用它,就可以少些一些代码,比如说异常以后抛出一些异常的代码...这里只需了解有这么一个东西就好了;使用模板以后语法写法有稍微的不一样,你需要按照它模板定义的游戏规则来决定怎么写.这里后面再仔细说

 


 

4:关于Spring中的容器(container)

Spring容器是什么?

它是创建对象 并装配和管理这些对象的 一个东西,存在于这个对象的整个生命周期中;

它大致分为2种类型:

1: bean工厂  ; org.springframework. beans. factory.beanFactory接口定义  (太简单,用的比较少)

2:应用上下文;   org.springframework.context.ApplicationContext 接口定义  (运用最多)

其中应用上下文又分为以下几种,你只要了解就好了:

1:AnnotationConfigApplicationContext: 从 配置类 中加载

2:AnnotationConfigWebApplicationContext:Web从配置类中加载

3:FileSystemXmlapplicationcontext:从XML中加载(文件路径)

4:ClassPathXmlApplicationContext:从XML中加载(整个路径下查找指定文件)

5:XmlWebApplicationContext:Web从XML中加载

 

大值代码就是:

//给出文件绝对路径
AppliactionContext context = new FileSystemXmlApplicationContext("C:/kingt.xml")

//在指定的文件系统路径下查找knight.xml文件
AppliactionContext context = new ClassPathXmlApplicationContext("kingt.xml")

//从配置l类中加载应用上下文
AppliactionContext context =new AnnotationConfigApplicationContext(com.springination.kningt.config.kninghtConfig.class)

 


 

 5:关于Spring中类的生命周期(bean的生命周期)

生命周期是什么?就是从new出来到结束,以及这中间的这些过程;那么一共有哪些过程呢?

没错,和.net一样,各种事件方法:下面了解一下就好:

 

  1. Spring对bean进行实例化;
  2. Spring将值和bean的引用注入到bean对应的属性中;
  3. 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给 setBean-Name()方法;
  4. 如果bean实现了BeanFactoryAware接口,Spring将调 用setBeanFactory()方法,将BeanFactory容器实例传入;
  5. 如果bean实现了ApplicationContextAware接口,Spring将调 用setApplicationContext()方法,将bean所在的应用上下文的 引用传入进来;
  6. 如果bean实现了BeanPostProcessor接口,Spring将调用它们 的post-ProcessBeforeInitialization()方法;
  7. 如果bean实现了InitializingBean接口,Spring将调用它们的 after-PropertiesSet()方法。类似地,如果bean使用initmethod声明了初始化方法,该方法也会被调用;
  8. 如果bean实现了BeanPostProcessor接口,Spring将调用它们 的post-ProcessAfterInitialization()方法;
  9. 此时,bean已经准备就绪,可以被应用程序使用了,它们将一直 驻留在应用上下文中,直到该应用上下文被销毁;
  10. 如果bean实现了DisposableBean接口,Spring将调用它的 destroy()接口方法。同样,如果bean使用destroy-method声明 了销毁方法,该方法也会被调用。

好多啊,你这样理解就好了 :

1创建------2写入名称--------------3写入工厂--------------4写入上下文------------------5初始化之前 ---------------------------------6初始化-----------------7初始化之后---------------------------------------8可以使用---------9销毁

new--------setBean-Name--------setBeanFactory-------setApplicationContext-----post-ProcessBeforeInitialization------after-PropertiesSet----post-ProcessAfterInitialization()--------------可以用了-----------destroy()


 

6:关于Spring的蓝图

 说到这里我们看看spring的整体蓝图,spring由哪些部分组成:

spring整体蓝图分为6个部分: 1:数据层     2:web层  3:切面层 4:工具 5:容器  6:测试

spring->数据6个部分 :  JDBC  , Transaction  ,ORM,  OXM,  Messageing,  JMS

spring->web: Web , Web servlet ,  Web portlet , WebSocket

spring->切面:AOP,Aspects

spring->instrumentation  : instrument ,instumentTomcat

spring容器: Beans , Core, Context,Expression , ContextSupport

测试: 单元测试

 

 

下一章将直接教大家用eclipse搭建SSH  struts - spring  - hibernate 框架

 

posted @ 2018-09-28 10:47  时光流逝1  阅读(469)  评论(0)    收藏  举报