什么是Spring?
Spring以 IOC (Inverse of Control 控制反转) 和AOP (Aspect Oruented Programming 面向切面编程) 为内核。
Spring是总舵优秀设计模式的组合(工厂、单例、代理、适配器、包装器等)
为什么说Spring是一个一站式的轻量级开源框架呢?EE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。
一站式: Spring框架有对三层的每层解决方案:
web层:Spring MVC.
持久层:JDBC Template
业务层:Spring的Bean管理
Spring的好处1、方便解耦,简化开发 Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
2.、、AOP编程的支持 ,Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能 声明式事务的支持 只需要通过配置就可以完成对事务的管理,而无需手动编程 方便程序的测试
3、Spring对Junit4支持,可以通过注解方便的测试Spring程序 方便集成各种优秀框架 Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持 Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,降低JavaEE API的使用难度
Spring的架构组成Spring架构由诸多模块组成,可分类为
-
核心技术:依赖注入,事件,资源,i18n,验证,数据绑定,类型转换,SpEL,AOP。
-
测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient。
-
数据访问:事务,DAO支持,JDBC,ORM。
-
Spring MVC和 Spring WebFlux Web框架。
-
集成:远程处理,JMS,JCA,JMX,电子邮件,任务,调度,缓存。
-
语言:Kotlin,Groovy,动态语言。
dependency>
org.springframework
spring-context
5.3.9
2 在自己工程下创建com/qf/service包,创建UserService接口和UserServiceImpl实现类
package com.qf.service;
public interface UserService {
public void addUser();
public void updateUser();
}
package com.qf.service.impl;
import com.qf.service.UserService;
public class UserServiceImpl implements UserService {
@Override
public void addUser() {
System.out.println("addUser...");
}
@Override
public void updateUser() {
System.out.println("updateUser...");
}
}
3 在srcmainresources目录下创建applicationContext.xml
4.在测试类中进行测试
package com.qf.test;
import com.qf.service.UserService;
import com.qf.service.impl.UserServiceImpl;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test1 {
@Test
public void addUserTest() {
//加载配置文件
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//调用getBean方法获取实例化对象
//传的"userService" 是配置文件 bean标签的id属性值
UserService userService = (UserService)applicationContext.getBean("userService");
userService.addUser();
applicationContext.close();
}
}
总结:
可以将所有对象创建和依赖关系维护,交给Spring管理,不用再手动创建对象



