Spring 入门知识储备

来源:互联网 发布:java的applet过时了吗 编辑:程序博客网 时间:2024/05/18 15:51

一个新的开始有些时候会让你更加的欣喜!

参考书籍《Spring Action Fourth Edition》

前言:
Spring不仅仅局限于服务器开发,任何的Java应用都能够在简单性、可测试性和松耦合方面从Spring中获益。Spring为了简化Java开发采取了以下四个策略:
● 基于POJO的轻量级和最小侵入编程;
● 通过依赖注入和面向接口实现松耦合;
● 基于切面和惯例进行声明式编程;
● 通过切面和模板减少样板式代码。

一、DI 和AOP是Spring的核心特性


  1. Spring的依赖注入 (Dependency injection,DI)
    Spring尽量避免因自身的API而弄乱应用代码,Spring不会强迫你实现Spring规范的接口或者继承Spring规范的类。相反在基于Spring构建的应用中,他的类通常没有任何痕迹表明你使用了Spring。最坏的情况下,一个类使用Spring的注解。
    DI 依赖注入能够将相互写作的软件组件之间保持松散耦合。DI 注入有两种基本的方式,基于XML文件配置的注入和基于Java配置类的注入。

  2. Spring的面向切面编程(aspect-oriented programming,AOP)
    面向切面的声明式的编程能够允许你把遍布应用的各部分的功能分离出来形成可以重用的组件。面向切面的编程往往被定义为促使软件系统实现关注点分离的一项技术。系统由不同的组件构成,每个组件各负责一块特定的功能。除了实现自身的核心功能之外,这些组件还承担着额外的职责。诸如日志、事务管理和安全这样的服务经常融入到自身具有核心业务逻辑的组件中去,这些系统服务通常称为横切关注点,因为它们会跨越多个组件。
    AOP能够使得一些常见的重复的非核心业务模块化,并且以声明的方式将它们应用到他们需要影响的组件中。这样带来的好处就是这些组件具有更高的内聚性并且更好的关注自身的业务,完全不需要了解涉及系统服务所带来的复杂性。 总是 AOP能够确保POJO的简单性。

相关的程序的源码:关于DI 和AOP的测试代码请点击链接http://download.csdn.net/detail/zhangyifei521/9610482

二、使用模板消除 样板式代码


import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Temp {
/**
* 不使用模板 *
* @param id
* @return
*/
// 许多JavaAPI,例如JDBC,会涉及编写大量的样板式代码
public Knight getEmployeeById1(long id) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Statement dataSource = null;
conn = dataSource.getConnection();
stmt = conn
.prepareStatement(“selectid,firstname,lastname,salaryfrom”
+ “employeewhereid=?”); // 查询员工
stmt.setLong(1, id);
rs = stmt.executeQuery();
BraveKnight knight = null;
if (rs.next()) {
knight = new BraveKnight(new RescueDamselQuest()); // 根据数据创建对象
knight.name = rs.getString(“name”);

        }        return knight;    } catch (SQLException e) {    } finally {        if (rs != null) {            try {                rs.close();            } catch (SQLException e) {            }        }        if (stmt != null) { // 收拾残局            try {                stmt.close();            } catch (SQLException e) {            }        }        if (conn != null) {            try {                conn.close();            } catch (SQLException e) {            }        }    }    return null;}/** * 使用模板的方法实现 更加关注逻辑实现 * @param id * @return */public Knight getEmployeeById2(long id) {    return jdbcTemplate.queryForObject(            "select id,firstname,lastname,salary" + // SQL查询                    "from knights whereid=?", new RowMapper<BraveKnight>() {                public BraveKnight mapRow(ResultSet rs, int rowNum)                        throws SQLException { // 将结果映射为对象                    BraveKnight bk = new BraveKnight(new RescueDamselQuest());                    bk.name=rs.getString("name");                    return bk;                }            }, id);}

}


三、Spring自带的应用上下文


ClassPathXmlApplicationContext—从类路径下的XML配置文件中加载上下文定义,把应用上下文定义文件当作类资源。
FileSystemXmlapplicationcontext—读取文件系统下的XML配置文件并加载上下文定义。
XmlWebApplicationContext—读取Web应用下的XML配置文件并装载上下文定义

AnnotationConfigApplicationContext:从一个或者多个基于Java配置类加载Spring应用上下文
AnnotationConfigWebApplicationContext:从一个或者多个基于Java配置类加载Spring Web应用上下文。


四、Spring模块

Spring中有多个Jar文件,Spring框架包括20不同的模块,每个模块都会以二进制类库、源码Jar和Javadoc构成。根据不同的模块功能可以划分为6类不同的功能。如下图所示:
1. Spring核心容器
2. SpringAOP模块
3. 数据访问和集成
4. Web与远程调用
5. Instrumentation
6. 测试Testing

六大功能

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小米5c手机gps信号弱怎么办 华为8手机时常听常音乐声怎么办 手机用久了变慢了怎么办 免税店买的皮带太短了怎么办 小米手机自拍照片是反的怎么办 华为p20旅行助手被删了怎么办 假如手机点击一个链接是病毒怎么办 华为手机自带铃声没了怎么办 华为手机升级后铃声没了怎么办 华为平板电脑激活锁忘记了怎么办 华为手机不小心删了系统应用怎么办 华为畅想6s开机键坏了怎么办 浏览网页是进入有病毒的网页怎么办 华为荣耀7清理加速那么慢怎么办 华为手机自带天气卸载了怎么办 手机被病毒感染了开不了机了怎么办 小米手机系统桌面已停止运行怎么办 三星手机应用锁密码忘了怎么办 手机管家应用加密密码忘记了怎么办 下载东西呗安全管家制止了该怎么办 手机百度时不小心中毒扣话费怎么办 手机扫二维码中了木马病毒要怎么办 电脑管家微信扫描语音打不开怎么办 遇到花心老公又爱玩没有担当怎么办 软件全闪退返回键不管用了怎么办 为什么下载了我的世界打不开怎么办 问道手游安全锁忘记了怎么办 电脑显示网络电缆没有插好怎么办 手机扣扣的密码忘记了怎么办 扣扣忘记密码和密保怎么办 以前用的扣扣密码忘记了怎么办 我忘记扣扣支付密码了怎么办 百度云盘下载后怎么打不开怎么办 节奏大师领钻石卡丢了怎么办? 节奏大师体力赠送关了打不开怎么办 微信钱包转账转错账号怎么办 激活微信账号电话号码输错了怎么办 爱思助手加强版下载不了软件怎么办 苹果手机用爱思助手游戏闪退怎么办 新买的手机号支付宝被注册了怎么办 王者荣耀以前领的东西忘记换怎么办