首先打开IntelliJ IDEA,创建一个Maven项目spring-lesson,删除src文件夹,只保留maven依赖对应的pom文件,这个项目作为父工程,在pom文件中增加<packaging>节点,节点内容为pom,表示构建聚合工程,如下:
<groupId>com.winning</groupId>
<artifactId>spring-lesson</artifactId>
<version>1.0-SNAPSHOT</version>
<!--表示构建聚合工程-->
<packaging>pom</packaging>
在父工程上添加一个新的模块,模块名称为day1-spring,首先哟啊引入spring相关依赖,这里主要是spring-context的依赖,如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
然后添加一个包:com.winning.dao,增加一个接口TestDAO,其中有一个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()方法!");
}
}
继续添加包,com.winning.service,创建TestService接口,其中有个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;
}
}
上面的service层代码中,有一个TestDAO类型的属性,要保证该属性能够注入进来,必须对属性提供一个set方法。
接下来我们来通过xml配置文件的方式实现java bean对象的管理,在resources文件夹下添加一个applicationContext.xml文件
<?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>
这里需要注意的是,id必须唯一,class节点表示类路径,也就是包名+类名。同时,在service层注入DAO层对象时,我们通过属性注入的方式,ref节点对应属性名称。
接下来我们来测试,通过ClassPathXmlApplicationContext这个类来加载我们的xml配置文件,参数名称为xml文件名,如下:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
下面我们通过这种方式,来分别获取DAO层和service层对象
//通过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();
运行看一下结果:
已经成功了,篇幅有限,注解实现方式下次再分享吧。