Parte I: IoC do Spring (Inversão de Controle) 2
No artigo anterior beans.xml
, especificamos o objeto de classe que precisa ser instanciado. Spring
No IoC
método de construção padrão chamado para criar um objeto há parâmetros de construção.
Este é um bom teste:
modifique as seguintes UserServiceImpl
categorias, da seguinte maneira:
public class UserServiceImpl implements UserService{
private UserDao userDao;
// set注入
public void setUserDao(UserDao dao){
this.userDao = dao;
}
public UserServiceImpl(){
System.out.println("UserServiceImpl无参数构造!");
}
public UserServiceImpl(UserDao dao){
this.userDao = dao;
System.out.println("UserServiceImpl有参构造!");
}
public void getUserService() {
userDao.getUser();
}
}
Teste agora:
public class myTest {
@Test
public void Test(){
// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = (UserService) context.getBean("userService");
userService.getUserService();
}
}
Ainda chamada Test
, e então não há problema, os resultados do teste são os seguintes:
Pode-se ver que o construtor padrão é o construtor sem argumento.
Em seguida, beans.xml
passamos o objeto de mudança em:
<?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
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="mySqlDao" class="com.dao.UserMySQLImpl"/>
<bean id="oracleDao" class="com.dao.UserOracleImpl"/>
<bean id="userService" class="com.service.UserServiceImpl">
<constructor-arg type="com.dao.UserDao" ref="oracleDao"/>
</bean>
</beans>
Especifique o tipo de entrada e a referência.
Em seguida, execute Test
: o
parâmetro do construtor passa o endereço do documento: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-constructor-injection
Endereço do vídeo de referência: https://www.bilibili.com/video/BV1WE411d7Dv?p=6