項目結構
UserDao.java
package cn.sxt.dao;
public interface UserDao{
public void getUser();
}
UserDaoMySqlImpl.java
package cn.sxt.dao.impl;
import cn.sxt.dao.UserDao;
public class UserDaoMySqlImpl implements UserDao{
@Override
public void getUser() {
// TODO 自動生成的方法存根
System.out.println("mysql獲取用戶數據");
}
}
UserDaoOracleImpl.java
package cn.sxt.dao.impl;
import cn.sxt.dao.UserDao;
public class UserDaoOracleImpl implements UserDao{
@Override
public void getUser() {
// TODO 自動生成的方法存根
System.out.println("oracle獲取用戶數據");
}
}
UserService.java
package cn.sxt.service;
public interface UserService {
public void getUser();
}
UserServiceImpl.java
package cn.sxt.service.impl;
import cn.sxt.dao.UserDao;
import cn.sxt.service.UserService;
public class UserServiceImpl implements UserService{
private UserDao userDao=null;
public void setUsserDao(UserDao userDao) {
this.userDao=userDao;
}
/*
* 好像也可以寫一樣的,這幾個XXX
* public class UserServiceImpl implements UserService{ private UserDao
* xxX=null;
* public void setXXX(UserDao xxX) {
* this.xxX=xxX;
* }
* public void getUser() {
* // TODO 自動生成的方法存根
* xxX.getUser();
* }
* 配置文件beans.xml裏property name="xxX"
* 這樣寫好像也是可以的,但還是要注意規範
*/
@Override
public void getUser() {
// TODO 自動生成的方法存根
userDao.getUser();
}
}
Test.java
package cn.sxt.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.sxt.service.UserService;
public class Test {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");
UserService us=(UserService)ac.getBean("service");
us.getUser();
}
}
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
<bean id="mysqlDao" class="cn.sxt.dao.impl.UserDaoMySqlImpl"/>
<bean id="oracleDao" class="cn.sxt.dao.impl.UserDaoOracleImpl"/>
<bean id="service" class="cn.sxt.service.impl.UserServiceImpl">
<!-- ref引用對象(對象是由spring來創建) -->
<!-- 這裏usserDao是setUsserDao中的UsserDao變爲小寫 -->
<!-- 可以直接把ref="XXX"中的mysqlDao改爲oracleDao,其他地方不需要改變-->
<!-- 即只需要改配置文件,其他地方不需要改變 -->
<property name="usserDao" ref="oracleDao"></property>
</bean>
</beans>