前言: 时间有限,课程赶得太紧,明天还要学习新的内容,这是我参考网上的教程,写的很粗糙,可能不便于阅读,后期再做完善吧┭┮﹏┭┮
1.环境准备

创建接口和实现类BookDao、BookDaoImpl、UserDao、UserDaoImpl、BookService、BookServiceImpl
package com.hnu.dao;
//先创建接口,然后创建实现类,最后在App类中引用实现
public interface BookDao {
public void save();
}
package com.hnu.dao.impl;
import com.hnu.dao.BookDao;
//实现接口
public class BookDaoImpl implements BookDao {
private String databaseName;
private int connectionNum;
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public void setConnectionNum(int connectionNum) {
this.connectionNum = connectionNum;
}
public void save() {
System.out.println("book dao save " + databaseName + " " + connectionNum);
}
}
package com.hnu.dao;
public interface UserDao {
public void save();
}
package com.hnu.dao.impl;
import com.hnu.dao.UserDao;
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("user dao save ...");
}
}
package com.hnu.service;
public interface BookService {
public void save();
}
package com.hnu.service.impl;
import com.hnu.dao.BookDao;
import com.hnu.dao.UserDao;
import com.hnu.service.BookService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class BookServiceImpl implements BookService {
//在这个实现类中也可以创建bookDao接口的对象,在接口中是不能创建对象的,接口中存放的是方法
private BookDao bookDao;
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
public void save() {
System.out.println("book service save ...");
bookDao.save();
userDao.save();
}
}
2.声明属性并提供setter方法
3.配置文件中进行注入配置
<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.xsd">
<bean id="bookDao" class="com.hnu.dao.impl.BookDaoImpl">
<!---注入简单数据类型->
<property name="connectionNum" value="6"/>
<property name="databaseName" value="pgsql"/>
bean>
<bean id="useDao" class="com.hnu.dao.impl.UserDaoImpl"/>
<bean id="bookService" class="com.hnu.service.impl.BookServiceImpl">
<property name="bookDao" ref="bookDao"/>
<property name="userDao" ref="useDao"/>
bean>
beans>
4.运行程序
AppForDISet
package com.hnu;
import com.hnu.service.BookService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppForDISet {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookService = (BookService)ctx.getBean("bookService");
bookService.save();
//ctx.close();
ctx.registerShutdownHook();
}
}

1.环境准备

创建相应的接口和实现类BookDao、BookDaoImpl、UserDao、UserDaoImpl、BookService、BookServiceImpl
package com.hnu.dao;
//先创建接口,然后创建实现类,最后在App类中引用实现
public interface BookDao {
public void save();
}
package com.hnu.dao.impl;
import com.hnu.dao.BookDao;
//实现接口
public class BookDaoImpl implements BookDao {
private String databaseName;
private int connectionNum;
public BookDaoImpl(String databaseName, int connectionNum) {
this.databaseName = databaseName;
this.connectionNum = connectionNum;
}
public void save() {
System.out.println("book dao save " + databaseName + " " + connectionNum);
}
}
package com.hnu.dao;
public interface UserDao {
public void save();
}
package com.hnu.dao.impl;
import com.hnu.dao.UserDao;
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("user dao save ...");
}
}
package com.hnu.service;
public interface BookService {
public void save();
}
package com.hnu.service.impl;
import com.hnu.dao.BookDao;
import com.hnu.dao.UserDao;
import com.hnu.service.BookService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class BookServiceImpl implements BookService {
//在这个实现类中也可以创建bookDao接口的对象,在接口中是不能创建对象的,接口中存放的是方法
private BookDao bookDao;
private UserDao userDao;
public BookServiceImpl(BookDao bookDao, UserDao userDao) {
this.bookDao = bookDao;
this.userDao = userDao;
}
public void save() {
System.out.println("book service save ...");
bookDao.save();
userDao.save();
}
}
2.注入引用数据类型和简单数据类型
3.配置文件中进行注入配置
<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.xsd">
<bean id="bookDao" class="com.hnu.dao.impl.BookDaoImpl">
<constructor-arg index="0" value="pgsql"/>
<constructor-arg index="1" value="6"/>
bean>
<bean id="userDao" class="com.hnu.dao.impl.UserDaoImpl"/>
<bean id="bookService" class="com.hnu.service.impl.BookServiceImpl">
<constructor-arg name="bookDao" ref="bookDao"/>
<constructor-arg name="userDao" ref="userDao"/>
bean>
beans>
4.运行程序
AppForDIConstructor
package com.hnu;
import com.hnu.service.BookService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppForDIConstructor {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookService = (BookService)ctx.getBean("bookService");
bookService.save();
//ctx.close();
ctx.registerShutdownHook();
}
}

5.3.2 自动装配方式有哪些?
1.准备环境

创建接口和实现类BookDao、BookDaoImpl、UserDao、UserDaoImpl、BookService、BookServiceImpl
package com.hnu.dao;
//先创建接口,然后创建实现类,最后在App类中引用实现
public interface BookDao {
public void save();
}
package com.hnu.dao.impl;
import com.hnu.dao.BookDao;
//实现接口
public class BookDaoImpl implements BookDao {
private String databaseName;
private int connectionNum;
public BookDaoImpl(String databaseName, int connectionNum) {
this.databaseName = databaseName;
this.connectionNum = connectionNum;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public void setConnectionNum(int connectionNum) {
this.connectionNum = connectionNum;
}
public void save() {
System.out.println("book dao save " + databaseName + " " + connectionNum);
}
}
package com.hnu.dao;
public interface UserDao {
public void save();
}
package com.hnu.dao.impl;
import com.hnu.dao.UserDao;
public class UserDaoImpl implements UserDao {
public void save() {
System.out.println("user dao save ...");
}
}
package com.hnu.service;
public interface BookService {
public void save();
}
package com.hnu.service.impl;
import com.hnu.dao.BookDao;
import com.hnu.dao.UserDao;
import com.hnu.service.BookService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class BookServiceImpl implements BookService {
//在这个实现类中也可以创建bookDao接口的对象,在接口中是不能创建对象的,接口中存放的是方法
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
2.引用数据类型和简单数据类型的自动注入bytype
3.完成自动配置的xml配置
<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.xsd">
<bean class="com.hnu.dao.impl.BookDaoImpl">
<constructor-arg index="0" value="pgsql"/>
<constructor-arg index="1" value="6"/>
bean>
<bean class="com.hnu.dao.impl.UserDaoImpl"/>
<bean id="bookService" class="com.hnu.service.impl.BookServiceImpl" autowire="byType"/>
beans>
3.运行程序
AppForDIAutoSet
package com.hnu;
import com.hnu.service.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppForDIAutoSet {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookService bookService = (BookService)ctx.getBean("bookService");
bookService.save();
}
}
运行结果:

环境准备

创建接口和实现类BookDao、BookDaoImpl
package com.hnu.dao;
//先创建接口,然后创建实现类,最后在App类中引用实现
public interface BookDao {
public void save();
}
package com.hnu.dao.impl;
import com.hnu.dao.BookDao;
import java.util.*;
//实现接口
public class BookDaoImpl implements BookDao {
private int[] array;
private List<String> list;
private Set<String> set;
private Map<String, String> map;
private Properties properties;
public void setArray(int[] array) {
this.array = array;
}
public void setList(List<String> list) {
this.list = list;
}
public void setSet(Set<String> set) {
this.set = set;
}
public void setMap(Map<String, String> map) {
this.map = map;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
public void save() {
System.out.println("book dao save ...");
System.out.println("遍历数组:" + Arrays.toString(array));
System.out.println("遍历List" + list);
System.out.println("遍历Set" + set);
System.out.println("遍历Map" + map);
System.out.println("遍历Properties" + properties);
}
}
2.引入spring依赖
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.2.10.RELEASEversion>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
dependencies>
3.xml配置
<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.xsd">
<bean id="bookDao" class="com.hnu.dao.impl.BookDaoImpl">
<property name="array">
<array>
<value>100value>
<value>200value>
<value>300value>
array>
property>
<property name="list">
<list>
<value>htuvalue>
<value>hnuvalue>
<value>mukewangvalue>
<value>bokeyuanvalue>
list>
property>
<property name="set">
<set>
<value>htuvalue>
<value>hnuvalue>
<value>mukewangvalue>
<value>bokeyuanvalue>
set>
property>
<property name="map">
<map>
<entry key="country" value="china"/>
<entry key="province" value="henan"/>
<entry key="city" value="kaifeng"/>
map>
property>
<property name="properties">
<props>
<prop key="country">chinaprop>
<prop key="province">henanprop>
<prop key="city">kaifengprop>
props>
property>
bean>
beans>
4.运行程序AppForDICollection
package com.hnu;
import com.hnu.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppForDICollection {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookDao bookDao = (BookDao)ctx.getBean("bookDao");
bookDao.save();
}
}
运行结果:
