Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,JMS,MQ,还有些面试题
源代码在线查看: 复习2.txt
spring:
1、spring原理
spring的最大作用ioc/di,将类与类的依赖关系写在配置文件中,
程序在运行时根据配置文件动态加载依赖的类,降低的类与类之间
的藕合度。它的原理是在applicationContext.xml加入bean标记,
在bean标记中通过class属性说明具体类名、通过property标签说明
该类的属性名、通过constructor-args说明构造子的参数。其一切都是
返射,当通过applicationContext.getBean("id名称")得到一个类实例时,
就是以bean标签的类名、属性名、构造子的参数为准,通过反射实例对象,
唤起对象的set方法设置属性值、通过构造子的newInstance实例化得到对象。
正因为spring一切都是反射,反射比直接调用的处理速度慢,所以这也是spring
的一个问题。
spring第二大作用就是aop,其机理来自于代理模式,代理模式
有三个角色分别是通用接口、代理、真实对象
代理、真实对象实现的是同一接口,将真实对象作为
代理的一个属性,向客户端公开的是代理,当客户端
调用代理的方法时,代理找到真实对象,调用真实对象
方法,在调用之前之后提供相关的服务,如事务、安全、
日志。其名词分别是代理、真实对象、装备、关切点、连接点。
2、动态代理:不用写代理类,虚拟机根据真实对象实现的接口产生一个类,通过
类实例化一个动态代理,在实例化动态代理时将真实对象
及装备注入到动态代理中,向客户端公开的是动态代理,
当客户端调用动态代理方法时,动态代理根据类的返射得
到真实对象的Method,调用装备的invoke方法,将动态代理、
Method、方法参数传与装备的invoke方法,invoke方法在唤
起method方法前或后做一些处理。
1、产生动态代理的类:
java.lang.refect.Proxy
2、装备必须实现InvocationHandler接口实现invoke方法
3、反射
什么是类的返射?
通过类说明可以得到类的父类、实现的接口、内部类、构造函数、方法、属性
并可以根据构造器实例化一个对象,唤起一个方法,取属性值,改属性值。
如何得到一个类说明?
Class cls=类.class;
Class cls=对象.getClass();
Class.forName("类路径");
如何得到一个方法并唤起它?
Class cls=类.class;
Constructor cons=cls.getConstructor(new Class[]{String.class});
Object obj=cons.newInstance(new Object[]{"aaa"});
Method method=cls.getMethod("方法名",new Class[]{String.class,Integer.class});
method.invoke(obj,new Object[]{"aa",new Integer(1)});
4、spring的三种注入方式是什么?
setter
interface
constructor
5、spring的核心接口及核类配置文件是什么?
FactoryBean:工厂bean主要实现ioc/di
ApplicationContext ac=new FileXmlApplicationContext("applicationContext.xml");
Object obj=ac.getBean("id值");
applicationContext.xml
6、spring配置文件中的主要标签是什么?写一个小实例?
张三
深圳
7、什么是spring的ioc?
强依赖关系:
List list=new ArrayList();
较弱依赖关系:通过工厂产生具体的实现类返回接口,增加一个产品
时,只需修改工厂。
DocumnetBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
最弱依赖关系:
将类与类依赖关系写到配置文件中,
程序在运行时动态的加载依赖的类,将一种强依赖关系转化为弱依赖关系。
是一个超级工厂,spring就是一个超级工厂。
8、aop是什么?作用?名称及特点?
aop是面向方面编程是对oop的一种补充,不可以代替oop,共提供一些通用的服务如事务、安全、日志
aop的名词:
拦截器:代理
装备:处理类
目标对象:真实对象
连接点:连接的是属性还是方法,一般方法
关切点:要拦截方法的条件
9、描述struts&spring&hibernate联合的配置文件如何实现?
sh(spring&hibernate)
dataSource
sessionFactory
userDao:(实现类不是接口) public class UserDaoImpl extends HibernateDaoSupport implements UserDao
sessionFactory
facade:(实现类不是接口)
userDao
transactionManager:HibernateTransactionManager
abstractProxy(abstract="true"):TransactionProxyFactoryBean
transactionManager
transactionAttributes
PROPRAGRAM_REQUIRED,readOnly
facadeProxy(parent="abstractProxy"):
target
facade
ss(struts&spring)
在strust中加入一个插件
类:ContextLoaderPlugIn
属性:
contextConfigLocation=/WEB-INF/applicationContext.xml
struts-config.xml中的每一个action的type不再指向真正的Action,而
DelegatingActionProxy
applicationContext.xml
10、jdbc、hibernate、ibatis各有什么特点及区别
jdbc(手动):手动写sql,
在执行dml时手动将对象的每一个值给PreparedStatement,再执行相关的操作
在执行dql时返回一个ResultSet,手动将ResultSet中的每一个值
封装到数据类中
ibatis(半自动):手动写sql
在执行dml时直接传一个对象进行增删改
在执行dql时直接返回一个对象,不用手动封装
hibernate(全自动):自动生成sql
在执行dml时直接传一个对象进行增删改
在执行dql时直接返回一个对象,不用手动封装
11、什么时候用ibatis:
1、对性能要求很高,要有高度优化的sql时
2、没有提供整个表结果,提供了几个select语句
3、大量的业务写在存储过程中
12、ibatis的核心类
SqlMapClientBuilder:加载sqlmapclient.xml文件及具体的映射文件
SqlMapClient:相当于hibernate中的session,做数据的增删改查
Reader reader=Resources.getResourceAsReader("路径");
SqlMapClient smc=SqlMapClientBuilder.buildSqlMapClient(reader);
smc.queryforObject("命名空间.标签名",Object o);
smc.queryforList("命名空间.标签名",Object o);
smc.delete("命名空间.标签名",Object o);
smc.update("命名空间.标签名",Object o);
smc.insert("命名空间.标签名",Object o);
13、ibatis的核心配置文件是什么?
sqlmapclient.xml:说明数据库连接及具体o/r mapping
buy.xml:具体的o/r mapping说明
14、描述struts&spring&ibatis联合的配置文件如何实现?
si(spring ibatis)
dataSoruce:在sqlmapclient中去掉数据库连接的相关信息
sqlMapClient:SqlMapClientFactoryBean
configLocation
classpath:sqlmapclient.xml
/WEB-INF/sqlmapclient.xml
customerDao
dataSource
sqlMapClient
buyDao
dataSource
sqlMapClient
facade
buyDao
customerDao
transactionManager:DataSourceTransactionManager
abstractProxy:TransactionProxyFactoryBean abstract="true"
transactionManager
transacctionAttributes
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
facadeProxy:parent="abstractProxy"
target:facade
15、struts1.x与spring的整合
1、在struts-config.xml中加入插件加载applicationContext.xml文件
2、修改struts-config.xml文件中的action标签,type属性指定的
不再是具体action而是DelegationActionProxy
3、在applicationContext.xml中加入bean标签,
说明具体的action,注意name="url"。
16、struts2.0&spring2&hibernate3.2组合
hibernate实现:
用hibernate的annotation(注解),不写xml文件,更为的方便。
在hibernate.cfg.xml中加载的不是xml文件,而是具体的有注解的hibernate类
如果是纯的hibernate环境,不能通过Configuration加载,而是通过AnnotationConfiguration加载
与spring的整合:
hibernate注解与spring组合时,不能用以前的方式,要在src根目录下加入hibernate.cfg.xml文件:
spring中的具体内容:
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
org.hibernate.dialect.SQLServerDialect
hibernate/buy.hbm.xml
hibernate/customer.hbm.xml
-->
hibernate.cfg.xml中的配置:
struts2的整合:
1、在web.xml中加入监听器加载applicationContext.xml文件
2、在applictionContext.xml说明真正的action
2、修改struts.xml中的action标签,其class属性不再是具体的Action,而是applictionContext.xml中
真正Action对应的id名
error.jsp
17、spring中的事务声明,因xml格式说明用了schema,
所以支持命名空间,使用了AspectJ语法
18、spring1.2及spring2.0在aop事务上的区别:
spring1.2事务处理实现
1、写一个抽象的代理bean,说明TransactionProxyBeanFactory
类,transactionManager装备,transationAttributes连接点,
当一个业务类需要一个代理必须写一个bean,通过target指定
具体的代理,有多少业务类就要写多少个代理bean,这样appl
icationContext.xml会变得很大。
2、支持命名空间,可以直接指定一个包或几个包中的
所有类与事务策略相对应,不管有多少类,可以做通用配置,
减少类的数量。
spring2.0也支持注解的事务声明,具体实现需要两步
1、在applictionContext.xml中加入
2、需要在方法前加入如下语句
@Transactional(readOnly=false,propagation=Propagation.REQUIRED)说明事务规则。
19、事务的特点:
原子性:要么全成功,要么全失败
一致性:保证一人业务方法内法,业务相关的处理全涉及到。
隔离性:事务之间不影响。
持久性:保存到数据库中
20、事务的实现
1、代码式
con.setAutocommit(false);
con.commit();
Transaction trans=con.beginTransaction();
trans.commit();
2、声明式
通过xml配置文件说明,不写代码spring的aop
21、事务的选择方式:
1、required_new:不管有没有,重新产生一个新的事务,有则挂起。
2、required(默认):有则用已有的,没有则产生一个新的。
3、mandatory:前面必须有事务,没有则报错
4、supports:有则用,没有则不用
5、not_supported:有则挂起,没有不用
6、never:有则报错,没有不报错
|
相关资源 |
|
-
Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,JMS,MQ,还有些面试题
-
《Java程序设计实用教程》朱战立 电子工业出版社 该电子书分13章详细介绍了Java语言的基础知识。
-
Java视频,共分10课,全面生动地讲解了Java编程的基础知识,特别适合初学者.
-
一个关于汇编的基础文档,开头是介绍汇编,后面还有些其他方面的介绍,很全面.
-
详细讲解了java的基础知识
-
这是java的基础知识的课件
-
java的相关程序设计的基础知识
-
Java小项目 在线聊天室 一次java作业 代码还很清晰 用到了很多java的基础知识
io流传输,线程,awt 还是能学到很多知识的
|