.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一样,各种事件方法:下面了解一下就好:
- Spring对bean进行实例化;
- Spring将值和bean的引用注入到bean对应的属性中;
- 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给 setBean-Name()方法;
- 如果bean实现了BeanFactoryAware接口,Spring将调 用setBeanFactory()方法,将BeanFactory容器实例传入;
- 如果bean实现了ApplicationContextAware接口,Spring将调 用setApplicationContext()方法,将bean所在的应用上下文的 引用传入进来;
- 如果bean实现了BeanPostProcessor接口,Spring将调用它们 的post-ProcessBeforeInitialization()方法;
- 如果bean实现了InitializingBean接口,Spring将调用它们的 after-PropertiesSet()方法。类似地,如果bean使用initmethod声明了初始化方法,该方法也会被调用;
- 如果bean实现了BeanPostProcessor接口,Spring将调用它们 的post-ProcessAfterInitialization()方法;
- 此时,bean已经准备就绪,可以被应用程序使用了,它们将一直 驻留在应用上下文中,直到该应用上下文被销毁;
- 如果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 框架
浙公网安备 33010602011771号