1.1 Spring需要的的核心jar包
spring-beans-4.3.6.RELEASE.jar
spring-context-4.3.6.RELEASE.jar
spring-core-4.3.6.RELEASE.jar
spring-expression-4.3.6.RELEASE.jar
but还需要一个第三方jar包来配合使用:commons-logging-1.2.jar
(这个jar是 日志模块 )
1.2 application.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-4.3.xsd">
</beans>
1.3 spring的IOC控制反转
**理解:**本来java创建一个类的实例,通过new的方式,现在把new的权限交给了Spring容器。
application.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-4.3.xsd">
<bean id="userDao" class="com.ntzhuima.ioc.UserDaoImpl"></bean>
<bean id="userService" class="com.ntzhuima.ioc.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
</beans>
TestIOC.java
public class TestIoc {
public static void main(String[] args) {
String path = "application.xml";
ApplicationContext application = new ClassPathXmlApplicationContext(path);
UserDao userDao = (UserDao) application.getBean("userDao");
userDao.say();
System.out.println("---------------------");
UserService userService = (UserService) application.getBean("userService");
userService.say();
}
}
由(UserDao) application.getBean(“userDao”)可以看出不再去使用new UserDao()去获取实例,这个就是控制反转。
1.4 Spring的DI依赖注入
理解:什么是依赖注入呢?比如说UserController.java中要使用UserService.java这个类,通常是在UserController.java中使用语句UserService userService = new UserService();这个是常规的操作。
下边是使用依赖注入的操作:
application.xml
<bean id="userDao" class="com.ntzhuima.ioc.UserDaoImpl"></bean>
<bean id="userService" class="com.ntzhuima.ioc.UserServiceImpl">
<property name="userDao" ref="userDao"></property>
</bean>
name="userDao"中的userDao是UserServiceImpl中属性名,ref="userDao"中的userDao指的id=userDao的bean。使用的是设值注入的方式,所以在UserServiceImpl中要这样写,就相当于实例化了UserDao了
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
1.5 如何获取bean
//1.声明路径
String path = "application.xml";
//2.初始化spring容器,加载配置文件
ApplicationContext application = new ClassPathXmlApplicationContext(path);
//3.通过容器获取bean实例
UserDao userDao = (UserDao) application.getBean("userDao");