Spring 基础

初学习Spring时,从网上找的一些知识并把它汇总在了一块

 

Ø         什么是Spring组件和依赖注入机制,为什么说Spring组件的依赖关系减少?

Spring的组件应该是bean.也就相当于一个java.

Spring依赖注入机制bean中用到的属性通过XML文档配置,而不是硬编码在程序中.再通过Spring的框架获得该bean,这时框架自动根据XML文档将属性设置进该bean.


将属性的培植放到XML文件中使各个bean可以不用写关于其他的bean的设置代码,也就是相当于自己的属性不用通过其他bean来设置,其他的bean是什么,在哪里,bean都不用管,完全交给Spring框架来配置.

举个例子
:
若有个bean,c1   依赖另一个   bean,c2,    具体的说可以是c1的属性a1需要c2a2()来初试化,则在c1中要写成
:
c2 cc2 = new c2();
a1 = cc2.a2();
而用Spring就可以什么都不用写,只要c1中有函数void setA1(type a1)就可以了
.

不用在c1中写入关于c2的内容,所以就没有了各bean间的依赖

 

 

Spring 基础

依赖注入的三种方式
interface injection / setter injection / constructor injection

现在比较常用的是:setter / constructor注入,一个接口可以由多个实现。

 

spring 利用DBCP获得连接池:(spring 运行在一个不提供datasource的环境时
使用org.apache.commons.dbcp.BasicDataSource作为数据源注入
需要在classpath中加入:commons-dbcp.jar/commons-pool.jar/commons-collections.jar

spring jndi数据源配置:
利用org.springframework.jndi.JndiObjectFactoryBean注入
classpath
中加入:spring-context.jar

tomcat中用DBCP取得连接池,通过jndi的方式来取得数据库连接;

 

利用TransactionProxyFactoryBean
<prop key="insert*">PROPAGATION_REQUIRED,readOnly,-RollbackableBizException</prop>
意思:以insert开头的方法在目前的事务中操作,

PROPAGATION_REQUIRED
:如果不存在就新建一个
readOnly
:只读
-RollbackableBizException
:发生指定异常时回滚事务
+RollbackableBizException
:发生指定异常时提交事务

 

 最大特点:独立于具体的关系型数据库


在使用hibernatespring整合的时候,可以将事务管理交给spring来处理,可以用声明式的事务处理。
只需使用org.springframework.orm.hibernate.HibernateTransactionManager,同时注入:sessionFactory
Bean Wrapper

DIDependency Injection,依赖注入)的理解:是在运行期,由Spring根据配置文件,将其他对象的引用通过组件的提供的setter方法进行设定(DI的第二种实现方式)

//动态加载了User类并实例化
Object obj = Class.forName("net.xiaxin.beans.User").newInstance();


//
通过BeanWrapper  set 对象的属性值
BeanWrapper bw = new BeanWrapperImpl(obj);
bw.setPropertyValue("name", "Erica");

BeanWrapper实现理解:动态加载User类,通过调用User.setName()方法设置name属性。


Bean Factory

bean的配置项目:
<bean
id="TheAction"
------------------BeanFactory获取JavaBean实例时需以此作为索引名称
class="net.xiaxin.spring.qs.UpperAction"
-------类名
singleton="true"
----------------"true"_BeanFactory作用范围内,只维护此Java Bean的一个实例;"false"_获取Java Bean时,BeanFactory每次都将创建一个新的实例返回
init-method="init"
----------用于资源的初始化
destroy-method="cleanup"
----用于资源释放
depends-on="ActionManager"
-----一般不用配置
>

理解:可以看成一个EJB容器,提供生命周期服务、事务服务、安全性服务、缓存服务等。


ApplicationContext

ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性,可以在web.xml中对ApplicationContext配置。
ApplicationContext
提供的扩展功能:
        1-
国际化支持

2-资源访问:ApplicationContext.getResource方法提供了对资源文件访问支持

3-事件传播

理解:同BeanFactory类似,ApplicationContext提供了BeanFactory的所有功能。
          ApplicationContext
主要是针对Java EE应用而来的,尤其是Web应用(WAR)。
          ApplicationContext
会被注册到ServletContext对象中。


Web Context

加载器:ContextLoaderListener  /  ContextLoaderServlet
分别在web.xml中添加:

<listener>
 <listener-class>
  org.springframework.web.context.ContextLoaderListener
 </listener-class>
</listener>

<servlet>
 <servlet-name>context</servlet-name>
  <servlet-class>
  org.springframework.web.context.ContextLoaderServlet
  </servlet-class>
 <load-on-startup>1</load-on-startup>
</servlet>

 

Web容器会自动加载/WEB-INF/applicationContext.xml并初始化

指定配置文件位置情况:
<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>
   /WEB-INF/classes/applicationContext-common.xml;
            /WEB-INF/classes/applicationContext-aop.xml;
            /WEB-INF/classes/applicationContext-bs.xml;
            /WEB-INF/classes/applicationContext-dao.xml;
            /WEB-INF/classes/applicationContext-ucc.xml
     </param-value>
</context-param>

配置完成之后就可以通过:WebApplicationContextUtils.getWebApplicationContext方法得到ApplicationContex引用。


 JDBC, 全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API, 通过它可访问各类关系数据库。
 
要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它是连接JDBC API与具体数据库之间的桥梁。


hibernate.jdbc.fetch_size:用来决定JDBC的获取量大小 50
hibernate.jdbc.batch_size
:会开启Hibernate使用JDBC2的批量更新功能取值达到多少数据提交一次. 建议值在 5 30之间。


spring 的事务管理:(有编程/声明两种)


自动连接DB的方式效率比较低下,可以预先设定好一定数量的连接并存放在connection pool中,提高效率。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值