什么是Spring?
Spring是分层的JavaSE/EE full-stack一站式轻量级开源框架,以IoC(Inverse of Control 控制反转)和AOP(Aspect Oriented Programming 面向切面编程)为内核,使用基本的JavaBean来完成以前只可能由EJB完成的工作,取代了EJB的臃肿、低效的开发模式。
在实际开发中,通常服务器端在采用三层体系架构,分别为表示层(Web)、业务逻辑层(Service)、持久层(Dao), Spring对每一层都提供了技术支持。
一 1.将spring的四个基础包以及commons-logging的JAR包复制到lib目录下
2. 在src目录下,创建一个com.itheima.ioc包,并在包中创建接口UserDao,然后在接口中定义一个say()方法。
package com.itheima.ioc;
public interface UserDao {
public void say();
}
3. 在com.itheima.ioc包下,创建UserDao接口的实现类UserDaoImpl,该类需要实现接口中的say()方法,并在方法中编写一条输出语句。
package com.itheima.ioc;
public class UserDaoImpl implements UserDao {
public void say() {
// TODO Auto-generated method stub
System.out.println("UserDao say hello world!");
}
}
4.在src目录下,创建Spring的配置文件applicationContext.xml,并在配置文件中创建一个id为userDao的Bean。
<?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.itheima.ioc.UserDaoImpl" />
</beans>
5. 在com.itheima.ioc包下,创建测试类TestIoC,并在类中编写main()方法。在main()方法中,需要初始化Spring容器,并加载配置文件,然后通过Spring容器获取userDao实例(即Java对象),最后调用实例中的say()方法。
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestloC {
public static void main(String[]args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) applicationContext.getBean("userDao");
userDao.say();
}
}
运行结果:
二:依赖注入
1.在com.itheima.ioc包中,创建接口UserService,在接口中编写一个say()方法。
package com.itheima.ioc;
public interface UserService {
public void say();
}
2.在com.itheima.ioc包中,创建UserService接口的实现类UserServiceImpl,在类中声明userDao属性,并添加属性的setter方法。
package com.itheima.ioc;
public class UserServicelmpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void say() {
// TODO Auto-generated method stub
this.userDao.say();
System.out.println("userService say hello World!");
}
}
3,在配置文件applicationContext.xml中,创建一个id为userService的Bean,该Bean用于实例化UserServiceImpl类的信息,并将userDao的实例注入到userService中。(左边会出现红色的❌,但是不影响程序运行)
<?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.itheima.ioc.UserDaoImpl">
<!-- collaborators and configuration for this bean go here -->
</bean>
<bean id="userService" class="com.itheima.ioc.UserServicelmpl">
<property name="userDao" ref ="userDao"></property>
<!-- collaborators and configuration for this bean go here -->
</bean>
</beans>
4.在com.itheima.ioc包中,创建测试类TestDI,来对程序进行测试。
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDl {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) applicationContext.getBean("userService");
userService.say();
}
}
控制台输出结果:
总结:Spring框架的7大优点
Spring具有简单、可测试和松耦合等特点。Spring不仅可以用于服务器端开发,也可以应用于任何Java应用的开发中。