笔面试复习(spring常用.jar包/事务/控制反转/bean对象管理和创建/springMVC工作原理/sql查询)

时间:2022-10-08 11:52:37

###spring常用jar包
1.spring.jar是包含有完整发布模块的单个jar包。
2.org.springframework.aop包含在应用中使用Spring的AOP特性时所需要的类。
3.org.springframework.aspects提供了面向切面的功能。
4.org.springframework.beans所有应用都要用到的,包含访问配置文件/创建和管理bean
以及进行Inversion of Control/Dependency Injection(IOC/DI)操作相关的所有的类。
5.org.springframework.context为Spring核心提供了大量模板扩展
6.org.springframework.core包含核心工具类
7.org.springframework.expression Spring 表达式语言.
8. org.springframework.test 对 Junit 等测试框架的简单封装。
9. org.springframework.transaction 为 JDBC、Hibernate、JDO、JPA 等提供的一致的声明式和编程式事务管理。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

### 关于事务(Transaction)

在同一次操作中,如果涉及2次或更多次的增删改操作(例如1次UPDATE和1次DELETE,或2次INSERT),则应该使用事务!

在使用SSM框架时,如果需要使用事务,则使用`@Transactional`对业务类中的那个方法进行注解!则该方法会以事务的模式去执行,也就是说,这个方法中的多次增删改操作要么全部成功,要么全部失败!

在使用`@Transactional`注解后,不需要手动使用代码开启事务、提交事务、回滚事务,在没有错误的情况下,会全部成功,仅当程序运行至抛出`RuntimeException`时,会自动回滚!

所以,在编写业务类中的方法时,如果执行增删改操作出错(并不一定是SQL语法错误,凡是不符合我们设定的数据逻辑的,都视为错误),则应该抛出`RuntimeException`,使得事务自动回滚!

使用`@Transactional`也可以对类进行注解,表示这个类中所有的方法都将以事务的模式去运行,但是,一般并不推荐这样做,因为,同一个Service类中,毕竟还是有很多方法不会涉及多次增删改操作,则这些方法没有必要使用事务。

使用以上Spring-JDBC的自动事务处理,框架完成的模式大致是:

tx.begin(); // 开启事务

try {
// 执行?条SQL
} catch(RuntimeException e) {
tx.rollback();
} tx.commit(); // 提交事务

需要添加相应的注解驱动:

<bean
id="transactionManager"
class="xx.xx.xx.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> <tx:annotaion-driven
transaction-manager="transactionManager" />

小结:在编写业务类中的方法时,如果执行出错,则应该抛出`RuntimeException`。凡是涉及多次增删改操作的方法,都使用`@Transactional`注解。

说明:有空了解事物传播。(找个例子)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

IOC:创建对象控制权被反转到了 Spring框架。
说明:
关于IOC,它灵魂在于各个bean内部只关注自己的业务,而对于bean的生成、注入、销毁这些管理过程,
统一交由springframework的上下文来管理,业务类的逻辑无感知,因此降低了耦合度和维护成本,但是底层用了大量的反射,
占据了大量的内存,所以也会使系统性能变慢。

DI:在创建对象时,动态的将依赖对象注入到Bean组件中。

AOP:(比如登录的时候拦截器***/比如事物处理等)一个任务的几个步骤中间插入一个小的事件或步骤,这就叫面向切面。
补充说明:Spring框架中的AOP拦截技术,其底层实现原理,是动态代理技术。对于面向接口的方法拦截,
依赖于jdk的动态代理技术(看看笔记)。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

##1.创建bean对象

三种形式:

1.使用无参的构造方法(重点)

<bean id="" class="xx.xx.ClassName"/>

2.静态工厂方法实例化bean对象(了解)

对象是由静态方法获取的实例,把静态方法获取实例对象的模式,叫静态工厂方法实例化bean对象

Calendar cd = Calendar.getInstance();

<bean id="cl" class="java.util.Calendar"
factory-method="getInstance"/>

3.实例工厂方法实例化bean对象(了解)

在cn.tedu.demo包中,定义类

public class BeanFactory{
public Calendar getCalendar(){
return Calendar.getInstance();//
}
}

//先创建对象 然后调用方法

<bean id="beanFactory" class="xx.xx.BeanFactory"/>

<bean id="calendar" class="java.util.Calendar" factory-method="getCalendar" factory-bean="beanFactory" />

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

##2.管理bean生命周期

bean的创建到销毁(从生到死)这个过程,叫生命周期
在cn.tedu.demo包中,

public class BeanLife{
public BeanLife(){
.....("BeanLife");
}//创建对象
public void init(){
.....("init");
}//初始化
public void destroy(){
.....("destroy");
}//销毁
}

配置文件

<!-- bean的生命周期 -->
<!-- init-method 表示定义初始化方法的方法名
destroy-method 表示定义销毁方法的方法名
-->
<bean id="beanLife"
class="cn.tedu.demo.BeanLife"
init-method="init"
destroy-method="destroy"/>

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

springMVC五大部件和工作原理:

...

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

###SQL:查询

+--------+---------+---------+
| name | kecheng | fengshu |
+--------+---------+---------+
| 张三 | 语文 | 80 |
| 张三 | 数学 | 75 |
| 李四 | 语文 | 76 |
| 李四 | 数学 | 90 |
| 王五 | 语文 | 81 |
| 王五 | 数学 | 100 |
| 王五 | 英语 | 90 |
+--------+---------+---------+

求每科成绩都大于80分的学生的姓名:

select distinct name from score where name not in(select name from score where fengshu < 80);

笔面试复习(spring常用.jar包/事务/控制反转/bean对象管理和创建/springMVC工作原理/sql查询)的更多相关文章

  1. Spring常用jar包功能详解

    很多小伙伴包括我自己,在使用spring的时候导入了一堆jar包,但是并不明白每个jar的用途,使用spring的不同功能时也不知该导入哪个jar包,今天记录一下spring各个jar包的含义,供大家 ...

  2. Java——Spring常用jar包功能详解

    很多小伙伴包括我自己,在使用spring的时候导入了一堆jar包,但是并不明白每个jar的用途,使用spring的不同功能时也不知该导入哪个jar包,今天记录一下spring各个jar包的含义,供大家 ...

  3. spring常用jar包总结(转载)

    spring.jar是包含有完整发布的单个jar 包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-m ...

  4. Spring常用jar包的功能

    jar名称 描述 spring-framework.jar spring框架比较完整的功能,core+aop+ioc+transaction spring-core.jar 基本上的核心工具类,一些u ...

  5. Spring &lpar;3&period;2&period;4&rpar; 常用jar 包解析

    Spring (3.2.4) 常用jar 包解析 基本jar包 spring-aop-3.2.4.RELEASE.jar spring-aspects-3.2.4.RELEASE.jar spring ...

  6. Java常用jar包用途

    Java常用jar包用途: USAGE INDEX JAR NAME USAGE 1 ASM asm-2.2.3.jar ASM字节码库 2 ASM asm-commons-2.2.3.jar ASM ...

  7. SSH框架应用中常用Jar包用途介绍

    struts2需要的几个jar包:1)xwork-core-2.1.62)struts2-core-2.1.83)ognl-2.7.34)freemarker-2.3.155)commons-io-1 ...

  8. java中最常用jar包的用途说明

    java中最常用jar包的用途说明,适合初学者 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实 ...

  9. Spring众多jar包的特点&comma;及Spring jar包官网下载方法

    下面给大家说说spring众多jar包的特点吧,无论对于初学spring的新手,还是spring高手,这篇文章都会给大家带来知识上的收获,如果你已经十分熟悉本文内容就当做一次温故知新吧.spring. ...

随机推荐

  1. 分布式搜索elasticsearch配置文件详解

    elasticsearch的config文件夹里面有两个配置文件:elasticsearch.yml和logging.yml,第一个是es的基本配置文件,第二个是日志配置文件,es也是使用log4j来 ...

  2. sp&lowbar;executesql得到执行sql语句的返回值

    执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...

  3. Poisson Distribution——泊松分布

    老师留个小作业,用EXCEL做不同lambda(np)的泊松分布图,这里分别用EXCEL,Python,MATLAB和R简单画一下. 1. EXCEL 运用EXCEL统计学公式,POISSON,算出各 ...

  4. linux device driver —— ioctl

    实现了应用程序和设备驱动通过ioctl通信.还是对设备驱动没什么感觉,贴一下代码吧. 在Ubuntu 16.04 64bit中测试通过 ioctldemo.c #include <linux/m ...

  5. 从 JavaScript 到 TypeScript

    本文首发在我的个人博客:http://muyunyun.cn/posts/66a54fc2/ 文中的案例代码已经上传到 TypeScript TypeScript 并不是一个完全新的语言, 它是 Ja ...

  6. SharePoint Framework 基于团队的开发(四)

    博客地址:http://blog.csdn.net/FoxDave 确保代码一致性和质量 软件开发团队常常同项目的一致性和高质量做斗争.不同的开发者有不同的编码风格和偏好.在每个团队都有技术优秀的独立 ...

  7. N个降序数组,找到最大的K个数

    问题定义 这个问题来自网上看到的百度算法题,感觉很不错,问题定义如下: 假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500 ...

  8. Python Word2Vec使用训练好的模型生成词向量

    # 文本文件必须是utf-8无bom格式 from gensim.models.deprecated.word2vec import Word2Vec model = Word2Vec.load( ' ...

  9. pandas &lpar;loc、iloc、ix&rpar;的区别

    loc:通过行标签索引数据 iloc:通过行号索引行数据 ix:通过行标签或行号索引数据(基于loc和iloc的混合) 使用loc.iloc.ix索引第一行数据: loc: iloc: ix:

  10. AWVS使用手册

    目录: 0×00.什么是Acunetix Web Vulnarability Scanner ( What is AWVS?) 0×01.AWVS安装过程.主要文件介绍.界面简介.主要操作区域简介(I ...