IOC:控制反转,也就是控制权的转移,这里的控制权指的是创建对象的控制权。在以往的编程当中,对象往往是由我们自己创建并使用的。但自己创建对象不但繁琐,还会导致代码的耦合性变得很高。
所以,为了提高编程的效率和降低代码的耦合性。我们从自己创建对象改变为让程序(Spring容器)来创建对象,这种思想就是IOC(控制反转)思想。
DI:依赖注入,可以理解为实现IOC思想的方法,当我们利用控制反转的思想,让Spring容器来帮我们创建对象,那么Spring容器是如何创建我们想要的对象的?
利用依赖注入,将自己需要用到的类交给Spring容器进行管理。在需要的时候,直接向Spring容器索取,而不需要自己去定义。
这就好比租房子,以前租房子需要挨个挨个找房东,非常麻烦。现在有了中介,租房子直接联系中介,就可以租到所有的房子了。这里的中介就相当于Spring容器。
依赖注入的常用方式:
1、set方法注入
2、构造方法注入
1、调用构造函数
<bean id="date" class="java.util.Date">bean>
2、调用静态方法创建
<bean id="cal" class="java.util.Calendar" factory-method="getInstance">bean>
3、调用容器当中的其他bean的方法创建,需要利用两个bean
<bean id="date1" class="java.util.Date" factory-bean="cal" factory-method="getTime">bean>
1、set方式注入
<bean id="person1" class="org.example.entity.Person">
<property name="name" value="tom">property>
<property name="phone" ref="phone">property>
<property name="age" value="19">property>
bean>
2、构造方法注入
<bean id="student" class="org.example.entity.Student">
<constructor-arg index="0" value="tom">constructor-arg>
<constructor-arg index="1" value="数据班">constructor-arg>
<constructor-arg index="2" ref="teacher">constructor-arg>
<constructor-arg index="3" ref="cat">constructor-arg>
bean>
1.在.xml文件当中书写指定扫描注解
<context:component-scan base-package="com.hqyj.controller">context:component-scan>
2.在类中写注解
@Service sercice层
@Controller web层
@Repository dao层
@AutoWired @Resource
AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面,是Spring的核心思想之一。
AOP 的本质是由 AOP 的本质是修改业务组件的多个方法的源代码,其最大的特点是在不修改源代码的前提下,为系统当中的业务组件添加新的功能。减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
AOP的两种代理模式:
静态AOP: AOP 框架在编译阶段对程序源代码进行修改,生成了静态的 AOP 代理类
动态AOP: AOP 框架在运行阶段对动态生成代理对象
MVC是一种设计模式,而SpringMVC是一种使用了MVC架构模式的思想,的请求驱动类型的框架。它基于java,实现了Web MVC设计模式,能够帮助我们简化开发。所以,springMVC是一个MVC的开源框架,springMVC=struts2+spring,springMVC就相当于是Struts2加上sring的整合。
分析:
第一步:用户发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配
置或者注解进行查找
第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链
(HandlerExecutionChain)
第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器
(Handler)
第五步:处理器适配器去执行Handler
第六步:Handler执行完给处理器适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析
第九步:视图解析器像前端控制器返回View
第十步:前端控制器对视图进行渲染
第十一步:前端控制器向用户响应结果
一、独立运行
Spring Boot而且内嵌了各种servlet容器,Tomcat、Jetty等,现在不再需要打成war包部署到容器中,Spring Boot只要打成一个可执行的jar包就能独立运行,所有的依赖包都在一个jar包内。
二、简化配置
spring-boot-starter-web启动器自动依赖其他组件,简少了maven的配置。
三、自动配置
Spring Boot能根据当前类路径下的类、jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置。
四、无代码生成和XML配置
Spring Boot配置过程中无代码生成,也无需XML配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的,这也是Spring4.x的核心功能之一。
五、应用监控
Spring Boot提供一系列端点可以监控服务及应用,做健康检测。
spring boot 项目创建
@SpringBootApplication :用来声明当前类是一个配置类
@EnableAutoConfiguration: 是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中
@ComponentScan: 用来自动扫描注解标识的类,生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类
@ResponseBody :作用在方法上或类上,让该方法的返回结果直接写入 HTTP response body 中,不会经过视图解析器,返回数据直接在页面展示。
@RestController: 是@Controller和@ResponseBody的结合体,作用于类,作用等于在类上面添加了@ResponseBody和@Controller
@Autowired: 默认按类型装配,常用于业务层实现类和持久层实现类
@Configuration: 作用于类之上,配置spring容器(应用上下文),相当于把该类作为spring的xml配置文件中
@RequestParam: 主要用于接收url?后面的参数,get或post请求,只要后面的url?有参数都可以获取到对应的参数
@RequestBody: 该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求