Primeiro abra o IntelliJ IDEA, crie uma lição de primavera do projeto Maven, exclua a pasta src e mantenha apenas o arquivo pom correspondente às dependências do maven. Este projeto é usado como projeto pai e o nó <packaging> é adicionado ao arquivo pom . O conteúdo do nó é pom, indicando a engenharia agregada da construção, conforme segue:
<groupId>com.winning</groupId>
<artifactId>spring-lesson</artifactId>
<version>1.0-SNAPSHOT</version>
<!--表示构建聚合工程-->
<packaging>pom</packaging>
Adicione um novo módulo ao projeto pai. O nome do módulo é day1-spring. Primeiro, introduza as dependências relacionadas ao spring, que são principalmente dependências do contexto do spring, como segue:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
Em seguida, adicione um pacote: com.winning.dao, adicione uma interface TestDAO, que possui um método hello():
package com.winning.dao;
public interface TestDAO {
void hello();
}
package com.winning.dao;
import org.springframework.stereotype.Repository;
@Repository
public class TestDAOImpl implements TestDAO {
@Override
public void hello() {
System.out.println("-->dao层TestDAOImpl执行hello()方法!");
}
}
Continue adicionando pacotes, com.winning.service, e crie uma interface TestService, que possui um método CallDaoMethod:
package com.winning.service;
import com.winning.dao.TestDAO;
public interface TestService {
void CallDaoMethod();
void setTestDAO(TestDAO testDAO);
}
@Service
public class TestServiceImpl implements TestService {
@Autowired // 把spring容器中TestDAO类型实例注入到testDAO属性中
TestDAO testDao;
@Override
public void CallDaoMethod() {
System.out.println("-->service层TestServiceImpl执行CallDaoMethod()方法!");
testDao.hello();
}
@Override
public void setTestDAO(TestDAO testDAO) {
this.testDao = testDAO;
}
}
No código da camada de serviço acima, há uma propriedade do tipo TestDAO. Para garantir que essa propriedade possa ser injetada, um método set deve ser fornecido para a propriedade.
A seguir, vamos implementar o gerenciamento de objetos java bean por meio do arquivo de configuração xml e adicionar um arquivo applicationContext.xml na pasta de recursos
<?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.xsd">
<bean id="testDao" class="com.winning.dao.TestDAOImpl" />
<bean id="testService" class="com.winning.service.TestServiceImpl">
<!--配置属性的依赖注入,前提是属性有set方法-->
<property name="TestDAO" ref="testDao" />
</bean>
</beans>
Deve-se notar aqui que o id deve ser único, e o nó da classe representa o caminho da classe, ou seja, o nome do pacote + nome da classe. Ao mesmo tempo, quando o objeto da camada DAO é injetado na camada de serviço, usamos a injeção de atributos, e o nó ref corresponde ao nome do atributo.
A seguir vamos testar, carregar nosso arquivo de configuração xml através da classe ClassPathXmlApplicationContext, o nome do parâmetro é o nome do arquivo xml, conforme segue:
Contexto ApplicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Abaixo usamos este método para obter os objetos da camada DAO e da camada de serviço, respectivamente
//通过xml文件管理java bean对象
ApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
Object testDaoObj = context.getBean("testDao");
System.out.println( testDaoObj );
//TestService.class,表示返回指定Bean类型,无需用Object接收
TestService testService = context.getBean("testService", TestService.class);
testService.CallDaoMethod();
Execute-o para ver o resultado:
Foi um sucesso e o espaço é limitado. Vamos compartilhar o método de implementação da anotação na próxima vez.