spring MVC工作原理


客户端发送申请:
前端控制器 :拦挡客户端发送的所有申请(通过(Filter)筛选器)筛选
将后果分发给映射器
映射器通过url地址映射寻找相干配置 返回给sevlet 中的Handleer对象
通过Handleer对象去匹配具体的Controller层的处理器
通过Controller调service层去解决具体的业务逻辑
业务解决完封装后果集通过Model传到前端控制器,前端控制器
将后果传给视图解析器,视图解析器会解析传过来的是什么类型(html,jsp...)
再将后果返回给客户端

spring罕用正文

1.@Controller @Service @Component(组件)
@Component 标注为一个一般的spring Bean类
@Controller 标注为控制器组件类
@Service 标注一个业务逻辑组件类~~~~
标注后 依据类门路会主动扫描 当做Bean实例
将其交给spring 容器治理
2.@Autowired
Spring提供的工具(由Spring的依赖注入工具(BeanPostProcessor、BeanFactoryPostProcessor)主动注入。)
用于为类的属性、结构器、办法 进行注值
@Autowired
private DataSource data;
就能够通过date间接去调 DataSource接口的属性和办法
@Bean
public MyService myService() {
return new MyServiceImpl();
}
@Bean大多数用在办法上,注解用于通知办法返回值,产生一个Bean对象,而后这个Bean对象交给Spring治理。产生这个Bean对象的办法Spring只会调用一次,

@Bean 和 Spring 的 XML 文件中的十分相似
<bean id="myService" class="com.acme.services.MyServiceImpl"
相似kv对模式

@RequestMapping

用来映射web申请(拜访门路和参数),解决类和办法的。能够注解在类和办法上,注解在办法上的

@RequestMapping(“abc”)等价于http://localhost:8080/abc

Spring IOC管制反转

把创建对象的权力交给框架。
new对象,会进步类和类之间的依赖关系,即代码之间的耦合性。
通过springIOC去创建对象升高了代码的耦合性

springIOC原理

1.获取spring的外围容器对象_
容器就会扫描"applicationContext.xml外围配置文件
读取到<bean>

2.applicationContext.xml中会配置

<bean id="empService" class="com.tedu.service.EmpServiceImpl"></bean>

获取到class属性中类的全门路,利用反射创立该类的对象
通过spring的外围容器获取EmpService接口的子类实例
返回值是Object 所以要强转

3.输入就失去了实现类的地址值
利用xml文件配置 将实现类交给spring创立 治理
如果前面实现类须要批改
就能够间接在xml配置中改

4.不须要本人创立,而是通过框架间接获取即可
省去了new对象的过程,天然就升高类和类之间的依赖关系
就升高了耦合性