Spring配置文件-对象引用的注入
1.普通注入
2.set方法注入
3.有参构造器注入
package dao.Impl;
import dao.UserDao;
public class UserDaoImpl implements UserDao {
public void save(){
System.out.println("--------");
}
}
package dao;
public interface UserDao {
public void save();
}
package demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.Impl.UserServiceImpl;
import service.UserService;
public class UserController {
public static void main(String[] args){
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService=(UserService)app.getBean("UserServiceImpl");
userService.save();
}
}
package demo;
import dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UserDaoDemo {
public static void main(){
ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userdao=(UserDao) app.getBean("userDao");
userdao.save();
}
}
package service.Impl;
import dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import service.UserService;
public class UserServiceImpl implements UserService {
private UserDao userDao;//容器当中的userDao
public UserServiceImpl(UserDao userDao) {
this.userDao = userDao;
}
public UserServiceImpl() {
}
/*public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
*/
@Override
public void save() {
userDao.save();
}
}
package service;
public interface UserService {
public void save();
}
<?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="dao.Impl.UserDaoImpl"></bean>
<!-- <bean id="UserServiceImpl" class="service.Impl.UserServiceImpl" >
<property name="userDao" ref="userDao"></property>
</bean>
name后面的值为set对象名字,但第一个字为大写
ref后面的值为bean id后面的名字
-->
<!--
//p命名空间的注入
<bean id="UserServiceImpl" class="service.Impl.UserServiceImpl" p:userDao-ref="userDao" />
-->
<bean id="UserServiceImpl" class="service.Impl.UserServiceImpl" >
<constructor-arg name="userDao" ref="userDao"></constructor-arg>
<!--
name后面的userDao与ref后面的userDao含义不一样
name后面的userDao是构造器的参数值
ref后面的userDao是容器bean id后面的值
-->
</bean>
</beans>