spring框架springMVC
1)用来整合其他框架,可以让程序的结构更为松散,实现低耦合
2)简化事务控制,实现声明式事务(相对于编程式事务来言)···············································································
两个核心思想:
IOC:控制反转Inversion of Control
所谓的IOC:是指将某一类对象的控制权(对象创建和方法调用)交给外部容器来负责。
DI:依赖注入Dependency Inject
所谓DI:对象依赖的属性,由容器给此属性赋值的过程
例如:普通的web容器,sevlet依赖于service,但web容器不能主动将service对象赋值给servlet,还得自己创建service对象
spring容器,action依赖于service,spring容器会将service对象赋值给action的属性
AOP:面向切面编程Aspect Oriented Programming vs OOP(面向对象编程)
容器:Tomcat(Servlet Filter Jsp):web容器
提供了servlet等web组件的生存和运行环境
spring框架也是一个容器,主要是负责管理service,DAO,action
IOC的好处:
1)能够真正提供“层与层”之间的低耦合
2)对象的创建过程由spring负责,被隐藏在spring内部,程序员只要关心需要哪种类型的对象就行
spring使用步骤:
1)引入spring基本jar6个
spring-beans-3.2.3.RELEASE.jar
spring-context-3.2.3.RELEASE.jar
spring-context-support-3.2.3.RELEASE.jar
spring-core-3.2.3.RELEASE.jar
spring-expression-3.2.3.RELEASE(spring表达式)
commons-logging-1.1.3(spring内部使用的日志接口)
2)配置文件
对配置文件的位置,名字没有严格要求
通过schema向导创建spring的配置文件
D:\java3\39框架
\spring\spring-framework-3.2.3.RELEASE\schema\beans\spring-beans-3.2.xsd
xml catalog导入上述路径的schema文件
src\下建立.xml配置文件,选择schema beans把prefix的p标签去掉
写配置文件:
<beans>
<!--id=”唯一标识”class=”实现类的全名”-->
<bean id=””class=””scope=”singleton”></bean>
<bean id=””class=””>
<!--给某个属性赋值name=”属性名”ref=”要引用的id值”-->
<property name=””ref=””></property>
</bean>
</beans>
使用spring管理的类
a)创建spring容器
ApplicationContext spring=new l|包名
/sp.xml/配置文件路径);
b)拿到被spring管理的对象
1.(重点)单例和多例:
<bean
id=””class=””scope=”singleton/prototype”init-method=”method”lazy-ini t=”false/true”></bean>
scope=”singleton”单例(仅在spring容器内是单例)
scope=”prototype”原型多例每当调用容器.getBean()
对于service,DAO用默认的单例,对于struts2中的action需要配置为多例
2.init-method=”用来执行初始化的方法名”
lazy-init=”false/true”是否延迟初始化默认false,true表示当用到它时,才调用构造,初始化方法
3.给不同类型的属性赋值(依赖注入)
①基本类型
②List类型
③Properties:hashtable子类map集合键值对键和值都是字符串类型取值
getProperty()有两个方法load(),store()可以直接导入或者将映射写入文件
④Resource对应着一个文件路径
连接池:预先创建一些连接,减少创建连接的时间,对连接个数设置了上限,受控的资源使用简化的编程模式
第三方连接池:c3p0
导包:
c3p0-0.9.1.jar
ojdbc6.jar
配置:
<bean id=”dataSource”
class=”hange.v2.c3p0.ComboPooledDataSource”>
<property name=”driverClass”
value=”oracle.jdbc.OracleDriver”></property>
<property name=”jdbcUrl”
value=”jdbc:oracle:thin:@localhost:1251:xe”></property>
<property name=”username”value=”hr”></property>
<property name=”password”value=”wchjun”></property>
<property name=”maxPoolSize”value=”60”></property>
<property name=”minPoolSize”value=”2”></property>
</bean>·····················································································································································································································································································
对于一些特殊类,如何用spring管理:
java.sql.Date
没有无参构造方法的类型,需要用<constructor-arg>
&>
<bean id=”sdate”class=”java.sql.Date”>
<!--每个标签对应一个构造方法的一个参数
<constrcutor-arg index=”构造方法参数的下标0开始”type=”long(可以省略)”value=”0”></constructor-arg>
-->
<constrcutor-arg index=”0”type=”long(可以省
spring ioc注解略)”value=”115”></constructor-arg>
<constrcutor-arg index=”1”type=”long(可以省
略)”value=”6”></constructor-arg>
<constrcutor-arg index=”2”type=”long(可以省
略)”value=”15”></constructor-arg>
</bean>
</beans>
Class c=Class.forName(“java.sql.Date”);//拿到类对象
Constructor Constructor(long.class);//拿到一个参数类型为long类型的构造器/构造方法对象
Date d=(wInstance(0L);//必须有一个无参构造方法/创建类的实例对象/到1970:0:0:0:0:0GMT
//三个参数
Constructor Constructor(int.class,int.class,int,class);
Date d2=(wInstance(115,6,15);
Calendar Instance();//通过静态方法获取当前时间
Time());//返回日历时间(java.util.Date)类型,默认当前时间
c.add(Calendar.DATE,-1);//减一天
Time());
<!--针对使用静态方法来创建类的实例,需要用fectory-method方法-->
<bean id=”cal”class=”java.util.Calendar”
factory-method=”getInstance”></bean>
利用spring通用的方法来创建对象:
-
-工厂类:
1)实现工厂类接口:FactoryBean<T>接口中的泛型是产品的类型T:Calendar 2).xml
<bean id=”cal2”class=”test.CalendarFactoryBean”></bean>
应用例子:
spring和hibernate整合关键一步:
将sessionFactory交给spring管理。
spring提供了一个SessionFactory工厂
实现1:
LocalSessionFactoryBean(配合映射文件.l使用)
实现2:
AnnotationSessionFactoryBean(配合注解使用)
引入jar包:
spring-orm-3.2.3.RELEASE
spring-jdbc-3.2.3.RELEASE
spring-tx-3.2.3.RELEASE(事务相关)
hibernate项目中的所有jar
配置xml:
<!--数据源(连接池)-->
<!--配置SessionFactory的工厂-->
<bean id=”SessionFactory”class=””>
<!--配置如何获取连接-->
<property name=”dataSource”ref=”dataSource”></property>
<!--给hibernate中各项属性配置赋值-->
<property name=”hibernateProperties”>
<props>
<prop key=””></prop>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论