spring总结

spring 开源的控制反转IOC和面向切面AOP的容器框架。
所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象
的创建及维护是由外部容器负责的。

这样控制权就是应用转移到了外部容器。控制权的转移就是所谓的反转。

所谓的依赖注入就是:
在运行期,由外部容器动态地将依赖对象注入到组件中。

处于同一个connection中的crud才属于同一个事务。
Connection conn =null;
conn.setAutoCommit(false);
Statement.executeUpdate(update account set amount=? where id=?);
Statement.executeUpdate(insert into log(type,date)values(?,?);
conn.commit();
conn.close();
sql语句Statement.executeUpdate(update account set amount=? where id=?);
与Statement.executeUpdate(insert into log(type,date)values(?,?);
处于同一事务中。

使用spring需要的jar包
http://www.springsource.org/download

需要的jar包:
dist\spring.jar
lib\jakarta-commons\commons-logging.jar

实例化spring容器
方法1:
在类路径下寻找配置文件来实例化容器
ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
方法2:
在文件系统路径下寻找配置文件来实例化容器
ApplicationContext ctx = new FileSyatemXmlApplicationContext(new String[]{"beans.xml"});
spring的配置文件可以指定多个,可以通过string数组传入。

一般使用方法1.

<bean id="ss" name="ss"/>
在bean标签中id的名称是在xml中唯一的,并且不能够使用有些特殊字符如:‘/ss/ss’,
如果使用到了特殊字符的话,那么就应该用name属性如:name="/ss/ss"。
bean是由spring容器进行创建。


三种实例化Bean的方式
1.使用类构造器实例化
2.使用静态工厂方法实例化
3.使用实例工厂方法实例化

Bean的作用域
1.singleton
2.prototype

默认情况下(即:scope="singleton"),在容器实例化的时候就对Bean进行实例化。
当scope="prototype"时,Bean的实例化是在调用getBean()方法时进行的。
当scope="singleton"时,如果设置了 lazy-init="true"的话,那么该bean会延迟初始化,
当调用getBean()方法时才初始化该Bean。

如果要设置配置文件中所有bean都延迟初始化的话,
则应在beans标签中进行如此设置<beans default-lazy-init="true"/>

注意:不建议使用延迟初始化.

如果设置了init-method属性,则其指定的方法将在该bean的默认构造方法执行后,运行。
如果设置了destory-method属性,则其指定的方法将在spring容器关闭时执行。

依赖注入方式:
1.通属性注入(通过ref注入)。即:setter方法!
2.使用构造器注入。
3.使用Field注入(用于注解方式)
<bean id="personDAO" class="com.test.spring.dao.impl.PersonDAOImpl"></bean>
<bean id="PersonServerImpl" class="com.test.spring.serverimpl.PersonServerImpl">
<property name="personDao" ref="personDAO" />
</bean>
2.内部Bean
<bean id="PersonServerImpl" class="com.test.spring.serverimpl.PersonServerImpl">
<property name="personDao">
<bean class="com.test.spring.dao.impl.PersonDAOImpl"/>
</property>
</bean>

集合类型的装配


在web容器中实例化spring容器的方法:
1.指定spring的配置文件,默认从web根目录寻找配置文件,
我们可以通过spring提供的classpath:前缀指定从类路径下寻找
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
<!--对spring容器进行实例化-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
web容器中配置struts
<servlet>
<servlet-name>struts</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>struts</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

要使用依赖注入功能,就必须把bean交给spring管理(即:在spring-config.xml中配置相应的bean)。
如果action没有交给spring管理时,我们通过下面的语句获取
spring容器中的实例:
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this
.getServlet().getServletContext());
personService = (PersonService) ctx.getBean("personServiceImpl");

把action交给spring管理后,我们可以通过使用依赖注入在action
中注入业务层的bean,确保action的path属性值与bean的名称相同。
<action path="/person/list".../>
spring配置
<bean name="/person/list" class="cn.itcast.web.action.PersonAction"/>

在struts配置文件中添加进spring的请求控制器,该请求控制器会先根据action的path属性值到spring容器中寻找跟该属性值同名的bean。如果寻找到即使用该bean处理用户请求,如果没有找到则使用struts配置文件中的<action/>标签中的type指定的类实例化一个对象来处理请求。
<!-- 把struts的action交给srping管理 -->
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
org.springframework.web.struts.DelegatingRequestProcessor类所在的包是:spring-webmvc-struts.jar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值