1.介绍DIjava
DI就是依赖注入,有一个那么高大上的词,其实就是为一个类添加一些属性,可是这个属性的实例就靠spring在来注入spring
2.对象注入数据库
这里有5个java文件一个xml文件,基本思路,客户端调用服务实现接口的addUser方法,添加一个用户,添加用户须要把数据保存在数据库,因此服务实现类里面new一个UserDao,而后调用UserDao去执行createUser的操做数组
UserDaoide
public interface UserDao { void createUser(); }
UserDaoImpl测试
public void createUser() { System.out.println("建立一个新的用户"); }
UserServicethis
public interface UserService { /** * 添加用户 */ void addUser(); }
UserServiceImplspa
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; } }
UserServiceTestcode
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.xmlxml
<?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-4.3.xsd"> <!-- 建立bean --> <bean id="userServiceBean" class="com.test.spring.di.UserServiceImpl"> <!-- 注入参数,name是对应实现类中的 参数名,ref是对应bean的ID --> <property name="userDao" ref="userDaoBean"></property> </bean> <!-- 建立bean --> <bean id="userDaoBean" class="com.test.spring.di.UserDaoImpl"></bean> </beans>
3. 基本类型注入
上面看了给予对象赋值,这里看看字符串赋值,两个类,1个配置
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(); } }
配置
<?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-4.3.xsd"> <!-- 实例化对象 --> <bean id="person" class="com.test.spring.setter.Person"> <!-- 第一种 写法 注入赋值 --> <property name="name" value="Jack"></property> <!-- 第二种 写法 注入赋值 --> <property name="age"> <value>13</value> </property> </bean> </beans>
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下添加子标签,不一样类型有本身特有的子标签名称
<!-- 数组 --> <property name="arrayData"> <array> <value>t1</value> <value>t2</value> </array> </property>
<!-- list --> <property name="listData"> <list> <value>t1</value> <value>t2</value> </list> </property>
<!-- set --> <property name="setData"> <set> <value>t1</value> <value>t2</value> </set> </property>
<!-- map --> <property name="mapData"> <map> <!-- 第一种方式 --> <entry key="k1" value="值1"></entry> <!-- 第二种方式 --> <entry> <key> <value>k2</value> </key> <value>值2</value> </entry> </map> </property>
<!-- properties --> <property name="propertiesData"> <props> <prop key="k1">值1</prop> <prop key="k2">值2</prop> </props> </property>