spring配置
- 格式:doc
- 大小:104.50 KB
- 文档页数:11
spring配置文件各个属性详解分类:spring 2012-08-09 11:25 9316人阅读评论(2) 收藏举报springaophibernateattributesxhtmlwebsphere目录(?)[+]一、引用外部属性文件<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:mail.properties</value><value>classpath:jdbc.properties</value></list></property></bean>我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。
该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value)。
注意:而在spring2.5的版本中提供了一种更简便的方式,如:1.<context:property-placeholderlocation="classpath:config/jdbc.properties"/>这样以后要使用属性文件中的资源时,可以使用${属性名}来获得。
二、常用数据源的配置第一种是:DBCP数据源,(需要加入2个jar文件,在spring中的lib下jakarta-commons/commons-dbcp.jar和commons-pools.jar)主要配置如下:<!-- Mysql版--><bean id="dataSource"class="mons.dbcp.BasicDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="${jdbc.url}"></property><property name="username" value="${ername}"></property><property name="password" value="${jdbc.password}"></property></bean>第二种是:c3p0数据源,跟第一种一个类型,需加入c3p0.jar包。
Spring的AOP配置(2011-04-01 20:38:58)转载标签:分类:SSH框架springaop配置获取参数it1.先写一个普通类:package com.spring.aop;public class Common {public void execute(String username,String password){ System.out.println("------------------普通类----------------");}}2.写一个切面类,用于合法性校验和日志添加:package com.spring.aop;public class Check {public void checkValidity(){System.out.println("------------------验证合法性----------------"); }public void addLog(JoinPoint j){System.out.println("------------------添加日志----------------");Object obj[] = j.getArgs();for(Object o :obj){System.out.println(o);}System.out.println("========checkSecurity=="+j.getSignature().getName());//这个是获得方法名}}3.配置AOP,使用XML方式:(注意红色标志的内容)<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.5.xsd/schema/aop/schema/aop/spring-aop-2.5.xsd"><bean id="common" class="mon"/><bean id="check" class="com.spring.aop.Check"/><aop:config><aop:aspect id="myAop" ref="check"><aop:pointcut id="target" expression="execution(*mon.execute(..))"/><aop:before method="checkValidity" pointcut-ref="target"/><aop:after method="addLog" pointcut-ref="target"/></aop:aspect></aop:config>注意:execution(* com.spring.aop.*.*(..))"/这样写应该就可以了这是com.aptech.jb.epet.dao.hibimpl 包下所有的类的所有方法。
spring MVC原理及配置springmvc原理及配置springmvc原理及配置1.springmvc详述:springmvc就是spring提供更多的一个强悍而有效率的web框架。
借助注释,springmvc提供更多了几乎就是pojo的研发模式,使控制器的研发和测试更加直观。
这些控制器通常不轻易处置命令,而是将其委托给spring上下文中的其他bean,通过spring的倚赖转化成功能,这些bean被转化成至控制器中。
springmvc主要由dispatcherservlet、处理器映射、处理器(控制器)、视图解析器、视图组成。
他的两个核心是两个核心:处理器映射:选择使用哪个控制器来处理请求视图解析器:选择结果应该如何渲染通过以上两点,springmvc确保了如何挑选掌控处置命令和如何挑选视图展现出输入之间的松耦合。
2.springmvc运行原理这里写图片描述(2)找寻处理器:由dispatcherservlet控制器查阅一个或多个handlermapping,找出处置命令的controller。
(3)调用处理器:dispatcherservlet将请求提交到controller。
(4)(5)调用业务处置和回到结果:controller调用业务逻辑处置后,回到modelandview。
3.springmvc接口解释(1)dispatcherservlet接口:spring提供的前端控制器,所有的请求都有经过它来统一分发。
在dispatcherservlet将请求分发给springcontroller 之前,需要借助于spring提供的handlermapping定位到具体的controller。
(2)handlermappingUSB:能够完成客户请求到controller映射。
(3)controller接口:须要为mammalian用户处置上述命令,因此同时实现controllerUSB时,必须确保线程安全并且可以器重。
Spring注解@Value及属性加载配置⽂件⽅式Spring中使⽤@Value注解给bean加载属性的配置⽂件有两种使⽤⽅式第⼀种:使⽤@Value("#{configProperties['websit.msgname']}")spring中配置属性加载⽂件的配置⽅式<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="locations"><list><value>classpath:/properties/websit.properties</value></list></property></bean>注意1.这⾥使⽤的configProperties必须要和定义的bean名称⼀致。
2.websit⽤来指定msgname来源于那个配置⽂件3.配置的加载属性bean名称为org.springframework.beans.factory.config.PropertiesFactoryBean第⼆种:使⽤@Value("${websit.msgname}");使⽤这种⽅式,⼜可以有两种配置⽅式⽅式⼀<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer"><property name="properties" ref="configProperties"/></bean><bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"><property name="locations"><list><value>classpath:/properties/websit.properties</value></list></property></bean>⽅式⼆<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:properties/websit.properties</value></list></property></bean>当使⽤@Value注解bean属性时,如果没有在配置⽂件中配置,这时启动spring就会抛出异常。
使⽤SpringBoot配置https(SSL证书)⽬录SpringBoot配置https(SSL证书)仅需三步1.把tomcat⽬录⾥⾯的.jks⽂件2.配置application.yml3.接下来是重定向SpringBoot 改造成https访问1.⽣成密钥证书2.将⽣成的密钥证书拷贝到项⽬中的resource中3.修改项⽬配置⽂件application.properties4.启动项⽬,直接访问项⽬即可SpringBoot配置https(SSL证书)最近在做微信⼩程序,https是必须条件仅需三步SpringBoot2.x版本对⽐⼀下这个⼩锁头是不是莫名有点好看?嘤为很久以前就备案有域名,就直接申请了SSL证书,⼏分钟就下来了1.把tomcat⽬录⾥⾯的.jks⽂件复制到项⽬⾥⾯(注意路径)2.配置application.ymlssl:key-store: classpath:server.jkskey-store-password: 申请时设置的密码keyStoreType: JKS3.接下来是重定向在启动类底下添加;(把指定的http8080端⼝重定向到https8888)@Beanpublic ServletWebServerFactory servletContainer() {TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();tomcat.addAdditionalTomcatConnectors(createHTTPConnector());return tomcat;}private Connector createHTTPConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");//同时启⽤http(8080)、https(8443)两个端⼝connector.setScheme("http");connector.setSecure(false);connector.setPort(8080);connector.setRedirectPort(443);return connector;}okSpringBoot 改造成https访问SpringBoot https改造1.⽣成密钥证书⽣成命令:keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650(1)关键字解释:alias:密钥别名storetype:指定密钥仓库类型keyalg:⽣证书的算法名称,RSA是⼀种⾮对称加密算法keysize:证书⼤⼩keystore:⽣成的证书⽂件的存储路径validity:证书的有效期(2)⽣成证书注意:在输⼊证书⽣成命令之后,会提⽰输⼊:密钥库⼝令:证书密码,在后⾯的项⽬中配置证书时⽤到姓⽒:⼀般没什么⽤,在浏览器中查看证书时会显⽰,⽤于正式场合的证书还是需要填写标准。
项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,就总结了下Spring中加载xml配置文件的方式, xml是最常见的spring 应用系统配置源。
Spring中的几种容器都支持使用xml装配bean,包括:XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext,.....一: XmlBeanFactory 引用资源1.Resource cr = new ClassPathResource("applicationContext.xml");BeanFactory bf=new XmlBeanFactory(cr);UserDao userDao = (UserDao)bf.getBean("userDao");二: ClassPathXmlApplicationContext 编译路径使用ClassPathXmlApplicationContext对象获取,必须把applicationContext.xml放置到类的加载路径中,也就是Src下面1.ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");// src目录下的2.ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao userDao = (UserDao)context.getBean("userDao");3.ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext-oracle.xml","applicationContext.xml"});UserDao userDao = (UserDao)context.getBean("userDao");// src/conf 目录下的4.ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml");5.ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml");三: FileSystemXmlApplicationContext用文件系统的路径必须把applicationContext.xml放置到工程目录下面,也就是项目路径的下面1.ApplicationContext factory=newFileSystemXmlApplicationContext("src/appcontext.xml");//使用了classpath: 前缀,作为标志, 这样,FileSystemXmlApplicationContext 也能够读入classpath下的相对路径没有classpath的话就是从当前的工作目录2.ApplicationContext factory=newFileSystemXmlApplicationContext("classpath:appcontext.xml");3.ApplicationContext factory=newFileSystemXmlApplicationContext("file:G:/Test/src/appcontext.xml");4.ApplicationContext factory=newFileSystemXmlApplicationContext("G:/Test/src/appcontext.xml");四: XmlWebApplicationContext是专为Web工程定制的。
spring-boot中druid配置⼀、druid配置步骤1、配置pom.xml⽂件,下载druid连接池资源。
2、配置application.properties3、访问连接池监控界⾯。
(:端⼝/druid)⼆、pom.xml<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency>三、application.properties# Druid连接池配置,官⽅配置参考:https:///alibaba/druid/tree/master/druid-spring-boot-starterspring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghaiername=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.type=com.alibaba.druid.pool.DruidDataSource# Druid其他配置spring.datasource.druid.initial-size=5spring.datasource.druid.max-active=20spring.datasource.druid.min-idle=10spring.datasource.druid.max-wait=10spring.datasource.druid.filters=stat,wallspring.datasource.druid.filter.stat.log-slow-sql=truespring.datasource.druid.filter.stat.slow-sql-millis=2000# Druid WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilterspring.datasource.druid.web-stat-filter.enabled=truespring.datasource.druid.web-stat-filter.url-pattern=/*spring.datasource.druid.web-stat-filter.exclusions=*.gif,*.png,*.jpg,*.html,*.js,*.css,*.ico,/druid/*# Druid StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置spring.datasource.druid.stat-view-servlet.enabled=truespring.datasource.druid.stat-view-servlet.url-pattern=/druid/*spring.datasource.druid.stat-view-servlet.reset-enable=truespring.datasource.druid.stat-view-servlet.login-username=adminspring.datasource.druid.stat-view-servlet.login-password=admin。
Spring中xml的配置(摘抄)出自:1、value元素<value/>元素通过字符串来指定属性或构造器参数的值。
<bean id="myDataSource" detroy-method="close"class="mons.dbcp.BasicDataSource"><property name="driverClassName"><value>com.mysql.jdbc.Driver</value></proerpty><property name="url"><value>jdbc:mysql://localhost:3306/mydb</value></property><property name="username"><vlaue>root</value></property></bean>2、idref元素idref元素用来将容器内其它bean的id传给<constructor-arg/>或<property/>元素,同时提供错误难功能。
<bean id="theTargetBean" class="..."/><bean id="theClientBean" class="..."><property name="targetName"><idref bean="theTargetBean" /></property></bean>等同于:<bean id="theTargetBean" class="..." /><bean id="theClientBean" class="..."><property name="targetName"><value>theTargetBean</value></bean>使用idref标记允许容器在部署时验证所被引用的bean是否存在。
Spring Security 3.x 出来一段时间了,跟Acegi是大不同了,与2.x的版本也有一些小小的区别,网上有一些文档,也有人翻译Spring Security 3.x的guide,但通过阅读guide,无法马上就能很容易的实现一个完整的实例。
我花了点儿时间,根据以前的实战经验,整理了一份完整的入门教程,供需要的朋友们参考。
1,建一个web project,并导入所有需要的lib,这步就不多讲了。
2,配置web.xml,使用Spring的机制装载:<?xml version="1.0" e ncoding="UTF-8"?><web-app version="2.4" xmlns="/xml/ns/j2ee"xml ns:xsi="/2001/XMLS chema-i nstance"xsi:s chemaLocation="http://java.s /xml/ns/j2eehttp://java.s /xml/ns/j2ee/web-app_2_4.xsd"><conte xt-param><param-name>contextConfi gLocation</param-name><param-val ue>classpath:applicationConte xt*.xml</param-value></conte xt-param><listener><listener-class>org.springframework.we b.conte xt.Context LoaderListener</listener-class></listener><filter><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.we b.filter.DelegatingFilterProxy</filter-class></filter><filter-mappi ng><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping><w elcome-file-list><wel come-file>l ogin.jsp</wel come-file></welcome-file-list></we b-app>这个文件中的内容我相信大家都很熟悉了,不再多说了。
public class Common {public void execute(String username,String password){System.out.println("------------------普通类----------------");}}2.写一个切面类,用于合法性校验和日志添加:package com.spring.aop;public class Check {public void checkV alidity(){System.out.println("------------------验证合法性----------------");}public void addLog(JoinPoint j){System.out.println("------------------添加日志----------------");Object obj[] = j.getArgs();for(Object o :obj){System.out.println(o);}System.out.println("========checkSecurity=="+j.getSignature().getName());//这个是获得方法名}}3.配置AOP,使用XML 方式:(注意红色标志的内容注意红色标志的内容)<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.5.xsd/schema/aop/schema/aop/spring-aop-2.5.xsd"><bean id="common" class="mon"/><bean id="check" class="com.spring.aop.Check"/><aop:config><aop:aspect id="myAop" ref="check"><aop:pointcut id="target" expression="execution(*mon.execute(..))"/><aop:before method="checkValidity" pointcut-ref="target"/><aop:after method="addLog" pointcut-ref="target"/></aop:aspect></aop:config></beans>注意:execution(* com.spring.aop.*.*(..))"/ 这样写应该就可以了这是com.aptech.jb.epet.dao.hibimpl 包下所有的类的所有方法。
Spring事务配置的五种方式前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识。
通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的。
总结如下:Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。
DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager 的实现为HibernateTransactionManager。
具体如下图:根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下:第一种方式:每个Bean都有一个代理<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schem a/beans"xm lns:xsi="/2001/XMLSchem a-instance"xm lns:context="/schem a/context"xm lns:aop="/schem a/aop"xsi:schem aLocation="/schem a/beans /schem a/beans/spring-beans-2.5.xsd/schem a/context/schem a/context/spring-context-2.5.xsd /schem a/aop/schema/aop/spring-aop-2.5.xsd"><bean id="sessionFactory"class="org.springfram ework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> <property name="configurationClass"value="org.hibernate.cfg.AnnotationConfiguration"/></bean><!-- 定义事务管理器(声明式的事务)--><bean id="t ransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager" ><property name="sessionFactory" ref="sessionFactory"/> </bean><!-- 配置DAO --><bean id="userDaoTarget" class="erDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean><bean id="userDao"class="org.springframework.transaction.interceptor.TransactionProxyFactor yBean"><!-- 配置事务管理器--><property nam e="t ransactionManager" ref="transactionManager"/><property name="target" ref="userDaoTarget"/><property nam e="proxyInterfaces"value="com.bluesky.spring.dao.GeneratorDao"/><!-- 配置事务属性--><property name="t ransactionAttributes"><props><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean></beans>第二种方式:所有Bean共享一个代理基类<?xml version="1.0" enc oding="UTF-8"?><beans xmlns="/schem a/beans"xm lns:xsi="/2001/XMLSchem a-instance"xm lns:context="/schem a/context"xm lns:aop="/schem a/aop"xsi:schem aLocation="/schem a/beans/schem a/beans/spring-beans-2.5.xsd/schem a/context/schem a/cont ext/spring-context-2.5.xsd /schem a/aop/schema/aop/spring-aop-2.5.xsd"><bean id="sessionFactory"class="org.springfram ework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> <property name="configurationClass"value="org.hibernate.cfg.AnnotationConfiguration"/></bean><!-- 定义事务管理器(声明式的事务)--><bean id="t ransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager" ><property name="sessionFactory" ref="sessionFactory"/> </bean><bean id="t ransactionBase"class="org.springfram ework.transaction.interceptor.TransactionProxyFact oryBean"lazy-init="true" abstract="t rue"><!-- 配置事务管理器--><property name="t ransactionManager" ref="transactionManager"/><!-- 配置事务属性--><property name="t ransactionAttributes"><props><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean><!-- 配置DAO --><bean id="userDaoTarget" class="erDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean><bean id="userDao" parent="transactionBase"><property name="target" ref="userDaoTarget"/></bean></beans>第三种方式:使用拦截器<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schem a/beans"xm lns:xsi="/2001/XMLSchem a-instance"xm lns:context="/schem a/context"xm lns:aop="/schem a/aop"xsi:schem aLocation="/schem a/beans /schem a/beans/spring-beans-2.5.xsd/schem a/context/schem a/context/spring-context-2.5.xsd /schem a/aop/schema/aop/spring-aop-2.5.xsd"><bean id="sessionFactory"class="org.springfram ework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"/> <property name="configurationClass"value="org.hibernate.cfg.AnnotationConfiguration"/></bean><!-- 定义事务管理器(声明式的事务)--><bean id="t ransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager" ><property name="sessionFactory" ref="sessionFactory"/> </bean><bean id="t ransactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterceptor" ><property name="t ransactionManager" ref="transactionManager"/><!-- 配置事务属性--><property name="t ransactionAttributes"><props><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean><beanclass="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreat or"><property name="beanNames"><list><value>*Dao</value></list></property><property name="interceptorNames"><list><value>t ransactionInterceptor</value></list></property></bean><!-- 配置DAO --><bean id="userDao" class="erDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean></beans>第四种方式:使用t x标签配置的拦截器<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schem a/beans"xm lns:xsi="/2001/XMLSchem a-instance"xm lns:context="/schem a/context"xm lns:aop="/schem a/aop"xm lns:tx="/schema/tx"xsi:schem aLocation="/schem a/beans /schem a/beans/spring-beans-2.5.xsd/schem a/context/schem a/context/spring-context-2.5.xsd /schem a/aop/schema/aop/spring-aop-2.5.xsd/schem a/tx/schema/tx/spring-tx-2.5.xsd"><context:annotation-config /><context:com ponent-scan base-package="com.bluesky"/><bean id="sessionFactory"class="org.springfram ework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> <property name="configurationClass"value="org.hibernate.cfg.AnnotationConfiguration"/></bean><!-- 定义事务管理器(声明式的事务)--><bean id="t ransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager" ><property name="sessionFactory" ref="sessionFactory"/> </bean><tx:advice id="txAdvice" transaction-m anager="transactionManager"> <t x:attributes><tx:method nam e="*" propagation="REQUIRED"/></t x:attributes></tx:advice><aop:config><aop:pointcut id="interceptorPointCuts"expression="execution(* com.bluesky.spring.dao.*.*(..))"/> <aop:advisor advice-ref="t xAdvice"pointcut-ref="interceptorPointCuts"/></aop:config></beans>第五种方式:全注解<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schem a/beans"xm lns:xsi="/2001/XMLSchem a-instance"xm lns:context="/schem a/context"xm lns:aop="/schem a/aop"xm lns:tx="/schema/tx"xsi:schem aLocation="/schem a/beans /schem a/beans/spring-beans-2.5.xsd/schem a/context/schem a/context/spring-context-2.5.xsd /schem a/aop/schema/aop/spring-aop-2.5.xsd/schem a/tx/schema/tx/spring-tx-2.5.xsd"><context:annotation-config /><context:com ponent-scan base-package="com.bluesky"/><tx:annotation-driven transaction-m anager="transactionManager"/><bean id="sessionFactory"class="org.springfram ework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"/> <property name="configurationClass"value="org.hibernate.cfg.AnnotationConfiguration"/></bean><!-- 定义事务管理器(声明式的事务)--><bean id="t ransactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager" ><property name="sessionFactory" ref="sessionFactory"/> </bean></beans>此时在DAO上需加上@Transactional注解,如下:package com.bluesky.spring.dao;import java.util.List;import org.hibernate.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import ponent;import er;@Transactional@Component("userDao")public class UserDaoImpl extends HibernateDaoSupport implements UserDao {public List<User> listUsers() {return this.getSession().createQuery("from User").list();}}。