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>