模拟注册功能
此功能重点在于将每一层对象的创建交给Spring管理,对象之间的依赖关系交给Spring来维护
Dao层接口以及实现代码
--------------------dao------------------
public interface UserDao {
void insert(User user);
}
------------------dao实现类-----------------
public class UserDaoImpl implements UserDao {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
@Override
public void insert(User user) {
try {
//获取连接对象
Connection conn = dataSource.getConnection();
System.out.println("conn :"+conn);
System.out.println("user :"+user);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Service层接口以及实现代码
----------------Service ------------------
public interface UserService {
void register(User user);
}
-----------------Service实现类--------------
public class UserServiceImpl implements UserService {
/*private UserDao dao = new UserDaoImpl(); 传统做法
* 现在交给Spring管理,使用Spring的setter方法注入
*因为要交给Spring的setter方法注入,所以(必须)提供set方法
*/
private UserDao dao;
@Override
public void register(User user) {
dao.insert(user);
}
//因为要用
public void setDao(UserDao dao) {
this.dao = dao;
}
}
Web表现层实现代码
public class UserServlet {
/* 传统做法
* private UserService service = new UserServiceImpl();
* 现在交给Spring管理,使用Spring的setter方法注入
* 因为要交给Spring的setter方法注入,所以(必须)提供set方法
*/
private UserService service;
public void register(User user) {
service.register(user);
}
public void setService(UserService service) {
this.service = service;
}
}
创建 db.properites
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/jdbcdemo
jdbc.username=root
jdbc.password=root
jdbc.maxActive=10
applicationContext.xml文件配置代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
">
<context:property-placeholder location="classpath:db.properties"/>
<!-- 创建连接池(数据源) -->
<bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 最大連接數 -->
<property name="maxActive" value="${jdbc.maxActive}"/>
</bean>
<!-- DAO层 -->
<!-- IOC -->
<bean id="myUserDao" class="com.ywq.spring.dao.impl.UserDaoImpl">
<!-- DI:属性注入 -->
<property name="dataSource" ref="myDataSource"/>
</bean>
<!-- Service层 -->
<bean id="myUserService" class="com.ywq.spring.service.impl.UserServiceImpl">
<!-- 注入dao -->
<property name="userDao" ref="myUserDao"/>
</bean>
<!-- 表现层 -->
<bean id="userController" class="com.ywq.spring.controller.UserController">
<!-- 注入Service -->
<property name="userService" ref="myUserService"/>
</bean>
</beans>
测试代码
@Test
public void testRegister() throws Exception {
//创建用户对象:模拟接受用户参数,封装对象的过程
User user = new User();
user.setUsername("张三");
user.setPassword("admin");
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//获取表现层的Servlet即可
UserServlet userServlet = context .getBean("userServlet", UserServlet.class);
//执行注册操作
userServlet.register(user);
}