1.介绍DI
DI就是依赖注入,有一个那么高大上的词,其实就是为一个类添加一些属性,但是这个属性的实例就靠spring在来注入
2.对象注入
这里有5个java文件一个xml文件,基本思路,客户端调用服务实现接口的addUser方法,添加一个用户,添加用户需要把数据保存在数据库,所以服务实现类里面new一个UserDao,然后调用UserDao去执行createUser的操作
- UserDao - 用户持久化接口
- UserDaoImpl - 用户持久化实现类
- UserService - 服务接口
- UserServiceImpl - 服务实现类
- UserServiceTest - 测试文件
- springConfig.xml - spring配置文件
UserDao
public interface UserDao { void createUser();}
UserDaoImpl
public void createUser() { System.out.println("创建一个新的用户"); }
UserService
public interface UserService { /** * 添加用户 */ void addUser();}
UserServiceImpl
public class UserServiceImpl implements UserService{ private UserDao userDao; /** * 实现接口方法 */ public void addUser() { userDao.createUser(); } public void setUserDao(UserDao userDao) { this.userDao = userDao; } public UserDao getUserDao() { return userDao; }}
UserServiceTest
public class UserServiceTest { @Test public void test() { //以前// UserService userService = new UserServiceImpl();// userService.addUser(); /** * spring的写法,这是一个工厂类,这里有一个参数,参数对应配置文件的classpath位置,src为根目录 */ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/com/test/spring/di/springConfig.xml"); //这里的参数为 配置文件中 bean id,意思就是获取 对应id实例对象 UserService us_1 = (UserService)context.getBean("userServiceBean"); us_1.addUser(); }
springConfig.xml
3. 基本类型注入
上面看了给予对象赋值,这里看看字符串赋值,两个类,1个配置
- Person - 对象
- TestSetter - 测试类
- springConfig.xml - 配置
person
public class Person { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { // TODO Auto-generated method stub return "名字 = " + getName() + " ,年龄 = " + getAge(); } }
配置
13
TestSetter
public class TestSetter { @Test public void test() { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/com/test/spring/setter/springConfig.xml"); Person person = context.getBean("person",Person.class); System.out.println(person.toString()); }}
4.集合注入
集合注入就是在property下添加子标签,不同类型有自己特有的子标签名称
- 数组 - array
t1 t2
- List - list
t1 t2
- Set - set
t1 t2
- Map - map
- Properties - props
值1 值2