La primera parte: el IoC (inversión de control) de Spring
es una imagen metafórica a continuación IoC
, es decir, desacoplamiento.
IoC
Es Spring
el contenido central del marco. Se implementa de diversas formas IoC
. Puede utilizar la XML
configuración o las anotaciones. En Spring
el control de inversión, la implementación depende de la inyección ( Dependency Injection, DI
).
Entonces, ¿por qué no venir y experimentarlo?
1. XML
Darse cuentaIoC
Ruta:
Hello.java
Contenido:
package com.weizu;
public class Hello {
private String name;
public Hello() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Hello{" +
"name='" + name + '\'' +
'}';
}
}
Luego defina el beans.xml
contenido:
<?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="hello" class="com.weizu.Hello">
<property name="name" value="Xiao wang."/>
</bean>
</beans>
Finalmente, use la prueba:
import com.weizu.Hello;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class myTest {
@Test
public void Test(){
// create and configure beans
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
Hello hello = (Hello) context.getBean("hello");
System.out.println(hello.getName());
}
}
Resultado de la prueba:
Documento oficial correspondiente: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#beans-factory-instantiation
Arriba hemos aprendido cómo usar XML
para cargar Bean
objetos, luego podemos ser el último artículo de mejora, con Spring
alojamiento automático.
Es decir beans.xml
, especifique Dao
la fuente de datos cargada por la capa en el archivo .
2. Caso 2
Estructura del proyecto
UserDao.java
:
public interface UserDao {
void getUser();
}
UserMySQLImpl .java
:
public class UserMySQLImpl implements UserDao{
public void getUser() {
System.out.println("MySQL impl.");
}
}
UserOracleImpl.java
:
public class UserOracleImpl implements UserDao{
public void getUser() {
System.out.println("Oracle impl.");
}
}
UserService.java
:
public interface UserService {
void getUserService();
}
UserServiceImpl.java
public class UserServiceImpl implements UserService{
private UserDao userDao;
// set注入
public void setUserDao(UserDao dao){
this.userDao = dao;
}
public void getUserService() {
userDao.getUser();
}
}
Luego, definimos el beans.xml
archivo para definir la dao
fuente de datos de la capa que debe cargarse :
<?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">
<property name="UserDao" ref="mySqlDao"/>
</bean>
</beans>
Luego, prueba en la prueba:
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();
}
}
Resultado:
es decir, puede xml
realizar un objeto de origen de datos simple para especificar lo que requiere la Spring
decisión cómo cargar. Ya no es necesario utilizarlo new
para crear objetos, lo que puede reducir el grado de acoplamiento del código. Recuerde: ApplicationContext
y ClassPathXmlApplicationContext
.
Simplemente modifique el archivo de configuración, sin modificar el programa. Viene el
objeto de Spring
la asignación y la gestión.
Dirección de video: https://www.bilibili.com/video/BV1WE411d7Dv?p=5&spm_id_from=pageDriver