社区
Java EE
帖子详情
spring中如何用注解实现注入sessionFactory?
woaitiyu
2009-09-17 03:23:20
例如我想在BaseDao中自动注入sessionFactory,如果用注解应该如何写?
public class BaseDaoImpl extends HibernateDaoSupport{
}
...全文
115
2
打赏
收藏
spring中如何用注解实现注入sessionFactory?
例如我想在BaseDao中自动注入sessionFactory,如果用注解应该如何写? public class BaseDaoImpl extends HibernateDaoSupport{ }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
louisgarcia
2009-09-17
打赏
举报
回复
2.0有没有这个功能 ????
是不是2.5中的 ?????
lytcd
2009-09-17
打赏
举报
回复
用配置不好吗```?
Spring
的学习笔记
第一课:面向抽象编程 4 第二课:Jdom的基本使用 4 第三课:模拟
Spring
功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立
spring
的配置文件 8 三、 引入
spring
的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 9 一、 什么是IOC、DI 9 二、 编辑xml文件时,没有提示 9 三、
注入
类型(Injecting dependencies) 9 (一) setter
注入
类型Setter Injection 9 (二) 构造方法Constructor Injection 10 四、 id、name 11 五、 简单属性的
注入
11 六、 Bean的作用范围scope 12 七、 集合
注入
12 八、 自动装配autowire 13 (一) byName 13 (二) byType 14 (三) 注意 14 九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-method destroy-method 不要和prototype一起用(了解) 15 第六课:annotation方式
Spring
16 一、 开始使用annotation配置
Spring
16 二、 @Autowired、@Qualifier 16 (一) @Autowired 16 (二) @Qualifier 17 三、 @Resource(重要、推荐) 17 (一) JSR-250 17 (二) @Resource 17 四、 @Componet 18 五、 @Scope、@PostConstruct、@PreDestroy 19 六、
注解
对应的jar包 19 第七课:AOP(面向切面编程) 19 一、 AOP概念 19 二、 利用动态代理
实现
面向切面编程 20 第八课:
Spring
AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二) aspectJ类库 22 (三) AOP的annotation实例 22 (四) AspectJ的专业术语 23 (五) 织入点语法 23 (六) Advice 24 (七) Pointcut 26 (八) annotatin方式的AOP实例 26 二、 AOP配置xml方式 27 三、 AOP
实现
动态代理注意 28 第九课:DataSource 28 一、 Sping配置数据源: 28 二、
注入
使用 29 三、 dbcp.BasicDataSource 29 第十课
Spring
整合Hiberante3 30 一、
Spring
配置hibernate3的
Session
Factory
30 (一) xml形式的
Session
Factory
30 (二) annotation
注解
方式的
Session
Factory
30 二、 引入hibernate所需要使用的jar 31 (一) 基本jar 31 (二) 加入annotation功能的jar包 31 (三) 搭建日志环境并配置显示DDL语句jar包 31 三、
Spring
整合hibernate3事务 31 (一) Annotation
注解
方式配置事务管理 31 (二)
Spring
事务选项 35 (三) XML文件形式配置
Spring
事务管理 37 四、 HibernateTemplate 38 (一) HibernateTemplate 38 (二) HibernateDaoSupport 39 第十一课:
Spring
整合-SSH 40 一、 第一步:加入jar包(需要的jar包列表) 40 二、 第二步: 首先整合
Spring
+ Hibernate 41 三、 第三步:再来整合Struts2 41 四、 struts的读常量: 43 第十二课:DTO、VO 43 一、 DTO 43 二、 VO 43 第十二课:SSH整合存在的问题 43 一、 Jsp
中
访问
Session
时,
Session
已经关闭 43 二、 如果不配置事务,open
Session
View出现异常 44 三、
中
文乱码问题: 44 第十三课:SSH整合的jar包 45 一、 Struts2 45 二、 Hibernate3.3.2 45 三、
Spring
46
spring
2.5 学习笔记
第一课:面向抽象编程 4 第二课:Jdom的基本使用 4 第三课:模拟
Spring
功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立
spring
的配置文件 8 三、 引入
spring
的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 9 一、 什么是IOC、DI 9 二、 编辑xml文件时,没有提示 9 三、
注入
类型(Injecting dependencies) 9 (一) setter
注入
类型Setter Injection 9 (二) 构造方法Constructor Injection 10 四、 id、name 11 五、 简单属性的
注入
11 六、 Bean的作用范围scope 12 七、 集合
注入
12 八、 自动装配autowire 13 (一) byName 13 (二) byType 14 (三) 注意 14 九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-method destroy-method 不要和prototype一起用(了解) 15 第六课:annotation方式
Spring
16 一、 开始使用annotation配置
Spring
16 二、 @Autowired、@Qualifier 16 (一) @Autowired 16 (二) @Qualifier 17 三、 @Resource(重要、推荐) 17 (一) JSR-250 17 (二) @Resource 17 四、 @Componet 18 五、 @Scope、@PostConstruct、@PreDestroy 19 六、
注解
对应的jar包 19 第七课:AOP(面向切面编程) 19 一、 AOP概念 19 二、 利用动态代理
实现
面向切面编程 20 第八课:
Spring
AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二) aspectJ类库 22 (三) AOP的annotation实例 22 (四) AspectJ的专业术语 23 (五) 织入点语法 23 (六) Advice 24 (七) Pointcut 26 (八) annotatin方式的AOP实例 26 二、 AOP配置xml方式 27 三、 AOP
实现
动态代理注意 28 第九课:DataSource 28 一、 Sping配置数据源: 28 二、
注入
使用 29 三、 dbcp.BasicDataSource 29 第十课
Spring
整合Hiberante3 30 一、
Spring
配置hibernate3的
Session
Factory
30 (一) xml形式的
Session
Factory
30 (二) annotation
注解
方式的
Session
Factory
30 二、 引入hibernate所需要使用的jar 31 (一) 基本jar 31 (二) 加入annotation功能的jar包 31 (三) 搭建日志环境并配置显示DDL语句jar包 31 三、
Spring
整合hibernate3事务 31 (一) Annotation
注解
方式配置事务管理 31 (二)
Spring
事务选项 35 (三) XML文件形式配置
Spring
事务管理 37 四、 HibernateTemplate 38 (一) HibernateTemplate 38 (二) HibernateDaoSupport 39 第十一课:
Spring
整合-SSH 40 一、 第一步:加入jar包(需要的jar包列表) 40 二、 第二步: 首先整合
Spring
+ Hibernate 41 三、 第三步:再来整合Struts2 41 四、 struts的读常量: 43 第十二课:DTO、VO 43 一、 DTO 43 二、 VO 43 第十二课:SSH整合存在的问题 43 一、 Jsp
中
访问
Session
时,
Session
已经关闭 43 二、 如果不配置事务,open
Session
View出现异常 44 三、
中
文乱码问题: 44 第十三课:SSH整合的jar包 45 一、 Struts2 45 二、 Hibernate3.3.2 45 三、
Spring
46
spring
_MVC源码
弃用了struts,用
spring
mvc框架做了几个项目,感觉都不错,而且使用了
注解
方式,可以省掉一大堆配置文件。本文主要介绍使用
注解
方式配置的
spring
mvc,之前写的
spring
3.0 mvc和rest小例子没有介绍到数据层的内容,现在这一篇补上。下面开始贴代码。 文
中
用的框架版本:
spring
3,hibernate 3,没有的,自己上网下。 先说web.xml配置: [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02.
03.
s3h3
04.
05.
contextConfigLocation
06.
classpath:applicationContext*.xml
07.
08.
09.
org.
spring
framework.web.context.ContextLoaderListener
10.
11. 12.
13.
spring
14.
org.
spring
framework.web.servlet.DispatcherServlet
15.
1
16.
17.
18.
spring
<!-- 这里在配成
spring
,下边也要写一个名为
spring
-servlet.xml的文件,主要用来配置它的controller --> 19.
*.do
20.
21.
22.
index.jsp
23.
24.
spring
-servlet,主要配置controller的信息 [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02.
09. 10.
11. <!-- 把标记了@Controller
注解
的类转换为bean --> 12.
13. <!-- 启动
Spring
MVC的
注解
功能,完成请求和
注解
POJO的映射 --> 14.
15. 16. <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> 17.
19. 20.
23.
applicationContext.xml代码 [java] view plaincopy 01.<?xml version="1.0" encoding="UTF-8"?> 02.
11. 12.
13.
<!-- 自动扫描所有
注解
该路径 --> 14. 15.
16. 17.
19.
20.
21.
22.
${dataSource.dialect}
23.
${dataSource.hbm2ddl.auto}
24.
update
25.
26.
27.
28.
29.
com.mvc.entity
<!-- 扫描实体类,也就是平时所说的model --> 30.
31.
32.
33. 34.
36.
37.
38.
39. 40.
42.
43.
44.
45.
46.
47. <!-- Dao的
实现
--> 48.
49.
50.
51.
52.
53. 54.
55.
hibernate.properties数据库连接配置 [java] view plaincopy 01.dataSource.password=123 02.dataSource.username=root 03.dataSource.databaseName=test 04.dataSource.driverClassName=com.mysql.jdbc.Driver 05.dataSource.dialect=org.hibernate.dialect.MySQL5Dialect 06.dataSource.serverName=localhost:3306 07.dataSource.url=jdbc:mysql://localhost:3306/test 08.dataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password} 09.dataSource.hbm2ddl.auto=update 配置已经完成,下面开始例子 先在数据库建表,例子用的是mysql数据库 [java] view plaincopy 01.CREATE TABLE `test`.`student` ( 02. `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 03. `name` varchar(45) NOT NULL, 04. `psw` varchar(45) NOT NULL, 05. PRIMARY KEY (`id`) 06.) 建好表后,生成实体类 [java] view plaincopy 01.package com.mvc.entity; 02. 03.import java.io.Serializable; 04. 05.import javax.persistence.Basic; 06.import javax.persistence.Column; 07.import javax.persistence.Entity; 08.import javax.persistence.GeneratedValue; 09.import javax.persistence.GenerationType; 10.import javax.persistence.Id; 11.import javax.persistence.Table; 12. 13.@Entity 14.@Table(name = "student") 15.public class Student implements Serializable { 16. private static final long serialVersionUID = 1L; 17. @Id 18. @Basic(optional = false) 19. @GeneratedValue(strategy = GenerationType.IDENTITY) 20. @Column(name = "id", nullable = false) 21. private Integer id; 22. @Column(name = "name") 23. private String user; 24. @Column(name = "psw") 25. private String psw; 26. public Integer getId() { 27. return id; 28. } 29. public void setId(Integer id) { 30. this.id = id; 31. } 32. 33. public String getUser() { 34. return user; 35. } 36. public void setUser(String user) { 37. this.user = user; 38. } 39. public String getPsw() { 40. return psw; 41. } 42. public void setPsw(String psw) { 43. this.psw = psw; 44. } 45.} Dao层
实现
[java] view plaincopy 01.package com.mvc.dao; 02. 03.import java.util.List; 04. 05.public interface EntityDao { 06. public List<Object> createQuery(final String queryString); 07. public Object save(final Object model); 08. public void update(final Object model); 09. public void delete(final Object model); 10.} [java] view plaincopy 01.package com.mvc.dao; 02. 03.import java.util.List; 04. 05.import org.hibernate.Query; 06.import org.
spring
framework.orm.hibernate3.HibernateCallback; 07.import org.
spring
framework.orm.hibernate3.support.HibernateDaoSupport; 08. 09.public class EntityDaoImpl extends HibernateDaoSupport implements EntityDao{ 10. public List<Object> createQuery(final String queryString) { 11. return (List<Object>) getHibernateTemplate().execute( 12. new HibernateCallback<Object>() { 13. public Object doInHibernate(org.hibernate.
Session
session
) 14. throws org.hibernate.HibernateException { 15. Query query =
session
.createQuery(queryString); 16. List<Object> rows = query.list(); 17. return rows; 18. } 19. }); 20. } 21. public Object save(final Object model) { 22. return getHibernateTemplate().execute( 23. new HibernateCallback<Object>() { 24. public Object doInHibernate(org.hibernate.
Session
session
) 25. throws org.hibernate.HibernateException { 26.
session
.save(model); 27. return null; 28. } 29. }); 30. } 31. public void update(final Object model) { 32. getHibernateTemplate().execute(new HibernateCallback<Object>() { 33. public Object doInHibernate(org.hibernate.
Session
session
) 34. throws org.hibernate.HibernateException { 35.
session
.update(model); 36. return null; 37. } 38. }); 39. } 40. public void delete(final Object model) { 41. getHibernateTemplate().execute(new HibernateCallback<Object>() { 42. public Object doInHibernate(org.hibernate.
Session
session
) 43. throws org.hibernate.HibernateException { 44.
session
.delete(model); 45. return null; 46. } 47. }); 48. } 49.} Dao在applicationContext.xml
注入
Dao只有一个类的
实现
,直接供其它service层调用,如果你想更换为其它的Dao
实现
,也只需修改这里的配置就行了。 开始写view页面,WEB-INF/view下新建页面student.jsp,WEB-INF/view这路径是在
spring
-servlet.xml文件配置的,你可以配置成其它,也可以多个路径。student.jsp代码 [xhtml] view plaincopy 01.<%@ page language="java" contentType="text/html; charset=UTF-8" 02. pageEncoding="UTF-8"%> 03.<%@ include file="/include/head.jsp"%> 04. 05.<html> 06.<head> 07.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 08.<title>添加</title> 09.
11.// -->
<!-- 13.table{ border-collapse:collapse; } 14.td{ border:1px solid #f00; } 15.--><style mce_bogus="1">table{ border-collapse:collapse; } 16.td{ border:1px solid #f00; }</style> 17.
<!-- 18.function add(){ 19. [removed].href="<%=request.getContextPath() %>/student.do?method=add"; 20.} 21. 22.function del(id){ 23.$.ajax( { 24. type : "POST", 25. url : "<%=request.getContextPath()%>/student.do?method=del&id;=" + id, 26. dataType: "json", 27. success : function(data) { 28. if(data.del == "true"){ 29. alert("删除成功!"); 30. $("#" + id).remove(); 31. } 32. else{ 33. alert("删除失败!"); 34. } 35. }, 36. error :function(){ 37. alert("网络连接出错!"); 38. } 39.}); 40.} 41.// -->
47.
48.
序号
49.
姓名
50.
密码
51.
操作
52.
53.
54.
"> 55.
56.
57.
58.
59. <input type="button" value="编辑"/> 60. <input type="button" value="${student.id}"/>')" value="删除"/> 61.
62. 63.
64. 65. 66.</body> 67.</html> student_add.jsp [xhtml] view plaincopy 01.<%@ page language="java" contentType="text/html; charset=UTF-8" 02. pageEncoding="UTF-8"%> 03.<%@ include file="/include/head.jsp"%> 04. 05.<html> 06.<head> 07.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 08.<title>学生添加</title> 09.
<!-- 10.function turnback(){ 11. [removed].href="<%=request.getContextPath() %>/student.do"; 12.} 13.// -->
/student.do?method=save"> 17.
18.
19.
姓名
<input id="user" name="user" type="text" /></td>
20.
密码
<input id="psw" name="psw" type="text" /></td>
21.
<input type="submit" value="提交"/><input type="button" value="返回" />
22.
23. 24.</form> 25.</body> 26.</html> controller类
实现
,只需把
注解
写上,
spring
就会自动帮你找到相应的bean,相应的
注解
标记意义,不明白的,可以自己查下@Service,@Controller,@Entity等等的内容。 [java] view plaincopy 01.package com.mvc.controller; 02. 03.import java.util.List; 04. 05.import javax.servlet.http.HttpServletRequest; 06.import javax.servlet.http.HttpServletResponse; 07. 08.import org.apache.commons.logging.Log; 09.import org.apache.commons.logging.Log
Factory
; 10.import org.
spring
framework.beans.
factory
.annotation.Autowired; 11.import org.
spring
framework.stereotype.Controller; 12.import org.
spring
framework.ui.ModelMap; 13.import org.
spring
framework.web.bind.annotation.RequestMapping; 14.import org.
spring
framework.web.bind.annotation.RequestMethod; 15.import org.
spring
framework.web.bind.annotation.RequestParam; 16.import org.
spring
framework.web.servlet.ModelAndView; 17. 18.import com.mvc.entity.Student; 19.import com.mvc.service.StudentService; 20. 21.@Controller 22.@RequestMapping("/student.do") 23.public class StudentController { 24. protected final transient Log log = Log
Factory
25. .getLog(StudentController.class); 26. @Autowired 27. private StudentService studentService; 28. public StudentController(){ 29. 30. } 31. 32. @RequestMapping 33. public String load(ModelMap modelMap){ 34. List<Object> list = studentService.getStudentList(); 35. modelMap.put("list", list); 36. return "student"; 37. } 38. 39. @RequestMapping(params = "method=add") 40. public String add(HttpServletRequest request, ModelMap modelMap) throws Exception{ 41. return "student_add"; 42. } 43. 44. @RequestMapping(params = "method=save") 45. public String save(HttpServletRequest request, ModelMap modelMap){ 46. String user = request.getParameter("user"); 47. String psw = request.getParameter("psw"); 48. Student st = new Student(); 49. st.setUser(user); 50. st.setPsw(psw); 51. try{ 52. studentService.save(st); 53. modelMap.put("addstate", "添加成功"); 54. } 55. catch(Exception e){ 56. log.error(e.getMessage()); 57. modelMap.put("addstate", "添加失败"); 58. } 59. 60. return "student_add"; 61. } 62. 63. @RequestMapping(params = "method=del") 64. public void del(@RequestParam("id") String id, HttpServletResponse response){ 65. try{ 66. Student st = new Student(); 67. st.setId(Integer.valueOf(id)); 68. studentService.delete(st); 69. response.getWriter().print("{/"del/":/"true/"}"); 70. } 71. catch(Exception e){ 72. log.error(e.getMessage()); 73. e.printStackTrace(); 74. } 75. } 76.} service类
实现
[java] view plaincopy 01.package com.mvc.service; 02. 03.import java.util.List; 04. 05.import org.
spring
framework.beans.
factory
.annotation.Autowired; 06.import org.
spring
framework.stereotype.Service; 07.import org.
spring
framework.transaction.annotation.Transactional; 08. 09.import com.mvc.dao.EntityDao; 10.import com.mvc.entity.Student; 11. 12.@Service 13.public class StudentService { 14. @Autowired 15. private EntityDao entityDao; 16. 17. @Transactional 18. public List<Object> getStudentList(){ 19. StringBuffer sff = new StringBuffer(); 20. sff.append("select a from ").append(Student.class.getSimpleName()).append(" a "); 21. List<Object> list = entityDao.createQuery(sff.toString()); 22. return list; 23. } 24. 25. public void save(Student st){ 26. entityDao.save(st); 27. } 28. public void delete(Object obj){ 29. entityDao.delete(obj); 30. } 31.} OK,例子写完。有其它业务内容,只需直接新建view,并
实现
相应comtroller和service就行了,配置和dao层的内容基本不变,也就是每次只需写jsp(view),controller和service调用dao就行了。 怎样,看了这个,
spring
mvc是不是比ssh
实现
更方便灵活。
spring
2.5+hibernate3.3+struts1.3的整合
一个
spring
2.5+hibernate3.3+struts1.3的整合的完整项目,该项目使用
spring
容器创建
session
Factory
,管理struts ActionBean的创建,其
中
使用
注解
的方式创建实体Bean以及依赖
注入
和事务
使用
spring
注解
,
注入
session
Factory
类
目前使用
spring
hibernate作为项目的框架,并且使用
注解
方式进行对象装载。在装载Dao对象的时候常常需要
注入
session
Factory
对象,通常的做法是Dao继承至HibernateDaoSuppor,t然后在Dao
中
添加setSuper
Session
Factory
方法进行
注入
的,这几天网上又看到一种更好的方法,所以这里就把这两种方法都记录一下。
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章