为了降低dao层与service层的耦合性
UserController.java
package com.yiheng.demo;
import com.yiheng.service.UserService;
import com.yiheng.service.impl.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserController {
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) app.getBean("userService");
userService.save();
}
}
UserDaoImpl.java
package com.yiheng.dao.impl;
import com.yiheng.dao.UserDao;
public class UserDaoImpl implements UserDao {
public UserDaoImpl(){
System.out.println("UserDaoImpl创建");
}
@Override
public void save() {
System.out.println("save.....");
}
}
UserDao接口
package com.yiheng.dao;
public interface UserDao {
public void save();
}
UserService接口
package com.yiheng.service;
public interface UserService {
public void save();
}
1、set方法注入
applicationContext.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- set方法引入-->
<bean id="userDao" class="com.yiheng.dao.impl.UserDaoImpl" ></bean>
<bean id="userService" class="com.yiheng.service.impl.UserServiceImpl">
<property name="userDao" ref="userDao" ></property>
</bean>
</beans>
UserServiceImpl.java
package com.yiheng.service.impl;
import com.yiheng.dao.UserDao;
import com.yiheng.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserServiceImpl implements UserService {
//set方法引入userDao,还需在Spring容器中配置
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public void save() {
// ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
// UserDao userDao = (UserDao)app.getBean("userDao");
userDao.save();
}
}
运行UserController的方法:
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext(“applicationContext.xml”);
UserService userService = (UserService) app.getBean(“userService”);
userService.save();
}
2、构造方法注入
applicationContext.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="userDao" class="com.yiheng.dao.impl.UserDaoImpl" ></bean>
<!--<!– 构造方法引入–>-->
<bean id="userService" class="com.yiheng.service.impl.UserServiceImpl">
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
</bean>
</beans>
UserServiceImpl.java
package com.yiheng.service.impl;
import com.yiheng.dao.UserDao;
import com.yiheng.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserServiceImpl implements UserService {
//set方法引入userDao,还需在Spring容器中配置
// private UserDao userDao;
//
// public void setUserDao(UserDao userDao) {
// this.userDao = userDao;
// }
//构造方法引入userDao,还需在Spring容器中配置
private UserDao userDao;
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
public UserServiceImpl() {
}
@Override
public void save() {
// ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
// UserDao userDao = (UserDao)app.getBean("userDao");
userDao.save();
}
}
结果和上面set方法一样。