当前位置: 首页 > news >正文

Spring基础、IOC、SpringMVC

前言

Spring基础、IOC、SpringMVC
博客地址:芒果橙的个人博客 【http://mangocheng.com】

一、常见问题

1. 基础信息

  • 描述:轻量级开发框架,旨在提高开发效率及系统的可维护性。

  • 模块:核心容器、数据访问/集成、Web、AOP、工具、消息、测试模块

  • 特征

    • 核心技术:DI、AOP、events、资源…
    • 数据访问

2. RestController vs Controller

  • 返回

    • Controller 返回一个页面(不加@ResponseBody)

    • RestController 返回对象:JSON或XML数据,对象数据直接写入HTTP响应,属于RESTful Web服务(前后端分离)

3. Spring IoC & AOP

  • IoC:Inverse of Control ,控制反转。[依赖倒置原则][https://www.zhihu.com/question/23277575/answer/169698662]
    • 一种设计思想,将原本在程序中手动创建对象的控制权交由Spring框架来管理。IoC容器是Spring用来实现IOC的载体,Map结构。
    • 类似工厂,当需要创建一个对象时,只需配置好配置文件/注解即可
  • 实现方式
    • DI
  • AOP:Aspect Oriented Programming,面向切面编程。
    • 将与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低耦合度,提高可拓展性和可维护性。
    • 基于动态代理
  • JNDI:Java Naming and Directory Interface,Java命名和目录接口)
    • SUN公司提供的一种标准的Java命名系统接口
    • JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。

4. Spring单例与线程安全

  • @Component和@Bean

    • @Component 作用于类,@Bean作用于方法
  • 将一个类声明为Spring的bean的注解

    • @Component:通用
    • @Repository:持久层,DAO
    • @Service:服务层
    • @Controller:Spring MVC控制层
  • 在类中注入属性对象的注解

    • Autowired
    • Resource
    • Qualifier

5. Spring MVC

  1. Model1时代:JSP为主体
  2. Model2时代:Java Bean(Model)+JSP(View)+Servlet(Controller)–JavaWeb MVC
  3. Spring MVC:对客户端的请求通过后端分层调用方式,将视图数据返回客户端
    1. 浏览器发送请求到后端DispatcherServlet,由Servlet找到对应的Handler类(控制层)
    2. Handler类调用处理器处理相应逻辑,返回ModelAndView(模型视图对象)
    3. ViewResolver(视图解析器)找到View,DisapterServlet将Model传给View,并返回给浏览器进行渲染

二、IOC

获得依赖对象的过程被反转了

1.DI:dependency Injection(依赖注入)

  • 描述:由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。即将实例变量传入到一个对象中去。
  • 理解
    • 找IOC容器==>容器返回对象==>使用对象
    • 房屋中介(找中介==>中介介绍房子==>租房入住)

2.Bean配置

  • 描述:在Spring中,每一个对象都是一个bean

  • 使用方式

    • 注解

    • xml配置

      <!-- 设值注入 -->
      <bean id="userService" class="com.mango.service.UserService" >
          <property name="userDAO" ref="userDAO"></property>
      </bean>
      <!-- 构造注入 -->
      <bean id="userService" class="com.mango.service.UserService" >
          <constructor-arg name="userDAO" ref="userDAO"></constructor-arg>
      </bean>
      
      <bean id="userDAO" class="com.mango.dao.UserDAO"></bean>
      
      public class UserServiceImpl implements UserService{
          
          private UserDAO userDAO;
          
          // 构造注入
          public UserServiceImpl(UserDAO userDAO){
              this.userDAO = userDAO;
          }
          
          // 设值注入
          public void setUserDAO(UserDAO userDAO){
              this.userDAO = userDAO;
          }
          
      }
      
  • 配置项

    • Id
    • Class
    • scope
  • 作用域

    • singleton:单例,指一个Bean容器中只能存在一份,默认

    • prototype:每次请求(每次使用)创建新的实例,destroy方式不生效

    • request:每次http请求创建一个实例且仅在当前request内有效

    • session:同上,每次http请求创建,当前session内有效

    • global session:基于portlet的web中有效,如果在web中,同session

相关文章:

  • 做群头像的网站在线制作/线上广告投放方式
  • 网络营销公司全网天下/林哥seo
  • flash网站制作软件/赣州是哪个省
  • 外贸营销型网站开发/软文营销写作技巧有哪些?
  • 最近最新手机中文大全10/南昌seo排名
  • 深圳招聘网官方网站/外链工具在线
  • 如何给视频添加水印?这三个加水印的方法让你实现
  • 微服务系列 - Zookeeper上篇:入门到精通
  • 设计数据库中常见的规范
  • 登录过程(vuex存储token、token持久化)
  • 【小程序】wxss与rpx单位以及全局样式和局部样式
  • 年度创新力十强,热点领域重要力量,典型案例报告入选!美创再获ISC安全百强多项殊荣
  • centos 7安装mysql
  • markdown上划线和下划线
  • Android中的IPv6
  • 实现Kafka至少消费一次
  • Automatic Exposure Correction of Consumer Photographs 分析
  • ArcGIS | NetCDF数据在ArcMap中的使用