博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring配置数据源
阅读量:2342 次
发布时间:2019-05-10

本文共 4450 字,大约阅读时间需要 14 分钟。

一。一个添加用户的小例子

使用了spring的annotation自动装配技术将数据源装配到ServiceImpl中。

需要引入:commons-pool.jar  commons-dbcp.jar 还有mysql的驱动包mysql-connector-java-5.1.22-bin.jar

service.java

package bean;public interface Service {	public void service();	public void save(User user);}
ServiceImpl.java

package bean;import java.lang.reflect.Proxy;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;public class ServiceTest {	@Test	public void proxy() {		BeanFactory factory = new ClassPathXmlApplicationContext(				"applicationContext.xml");		Service s = (Service) factory.getBean("serviceImpl");		s.save(null);	}}
Interceptor.java

package interceptor;import org.springframework.stereotype.Component;@Componentpublic class Interceptor {	public void before() {		System.out.println("服务即将开始");	}}
applicationContext.xml
ServiceTest.java

package bean;import java.lang.reflect.Proxy;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;public class ServiceTest {	@Test	public void proxy() {		BeanFactory factory = new ClassPathXmlApplicationContext(				"applicationContext.xml");		Service s = (Service) factory.getBean("serviceImpl");		s.save(null);	}}

二。加入hibernate

以一个保存用户的save过程为例

ServiceImpl

package bean;import java.sql.Connection;import java.sql.SQLException;import javax.annotation.Resource;import javax.jms.Session;import javax.sql.DataSource;import model.User;import org.hibernate.SessionFactory;import org.springframework.stereotype.Component;@Componentpublic class ServiceImpl implements Service {	private SessionFactory sessionFactory;			public SessionFactory getSessionFactory() {		return sessionFactory;	}	@Resource(name="sessionFactory")	public void setSessionFactory(SessionFactory sessionFactory) {		this.sessionFactory = sessionFactory;	}	public void save(User user) {		try {			org.hibernate.Session s= sessionFactory.openSession();			s.beginTransaction();			s.save(user);			s.getTransaction().commit();			s.close();			System.out.println("user saved!");		} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}	// 业务方法	public void service() {		// TODO Auto-generated method stub		System.out.println("i'm servicing");	}}
User

package model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import org.springframework.stereotype.Component;@Entity//指明这是实体类@Table(name="user")//对应数据库里的user表public class User {	private int id;	private String name = null;	private String password = null;	@Id//id 自动生成	@GeneratedValue	public int getId() {		return id;	}	public void setId(int id) {		this.id = id;	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public String getPassword() {		return password;	}	public void setPassword(String password) {		this.password = password;	}}
applicationContext.xml
model.User
org.hibernate.dialect.MySQLDialect
true

技巧:

model.User
这里我们每个实体类都得手动加进去,可以使用AnnotationSessionFactoryBean的setpackagesToScan方法,改成:

model
这样的话就可以自动扫描model包下的所有实体类了,以后添加新的实体类也不用修改xml

ServiceTest

package test;import static org.junit.Assert.*;import model.User;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.beans.factory.BeanFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import bean.Service;public class ServiceTest {	@Before	public void setUp() throws Exception {	}	@After	public void tearDown() throws Exception {	}	@Test	public void testSave() {		BeanFactory factory = new ClassPathXmlApplicationContext(				"applicationContext.xml");		Service s = (Service) factory.getBean("serviceImpl");		User user = new User();		user.setId(1);		user.setName("hibernate");		user.setPassword("hi");		s.save(user);	}}

你可能感兴趣的文章
intrepidkarthi / RabbitMQ-Android-Chat 代码分析
查看>>
actionbar
查看>>
activity中的fragment的获取
查看>>
asihttprequest website
查看>>
Purecss
查看>>
api 创建实体,返回id
查看>>
mvc jquery 版本与 microsoft unobtrusive 版本问题
查看>>
mvc extend bootstrap
查看>>
IE ,chrome弹出窗口问题
查看>>
rabbitmq 推送的网站
查看>>
前端开发 收集
查看>>
rabbitmq sokcet.io nodejs
查看>>
mvc缓存设计一点思路
查看>>
redis service stack
查看>>
hadoop command
查看>>
Error:java: Compilation failed: internal java compiler error
查看>>
String写出到文件
查看>>
sql优化部分总结
查看>>
IDEA运行时动态加载页面
查看>>
UML总结(对九种图的认识和如何使用Rational Rose 画图)
查看>>