spring

IOC

  • 思想

把所有对象都当做Bean
通过配置 Bean 及 Bean 之间的依赖关系,
然后利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。

  • 原理

Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的 Bean 配
置注册表 BeanDefinitionRegistry ,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准
备就绪的运行环境。其中 Bean 缓存池为 HashMap 实现

spring原理思想

  • bean配置源

    1. 在XMl中进行显示配置
    2. 在Java中进行显示配置
    3. 隐式的bean发现机制和自动装配
      1. *组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。
      2. *自动装配(autowiring):Spring自动满足bean之间的依赖。
  • BeanFactory

    • ListableBeanFactory
    • HierarchicalBeanFactor
    • ConfigurableBeanFactory
    • AutowireCapableBeanFactory

spring原理思想

  • ApplicationContext 面向开发

    • ApplicationContext常用实现类:
      1. ClassPathXmlApplicationContext
        从类路径下的xml配置文件中加载 bean配置
      2. FileSystemXmlApplicationContext
        从系统盘符中的xml配置文件中加载 bean配置
      3. AnnotationConfigApplicationContext
        从java的配置类中的java注解加载 bean配置
      4. AnnotationConfigWebApplicationContext
        从java的配置类中的java注解加载 bean配置,专门为web应用准备的
      5. XmlWebApplicationContext
        从web应用下的xml配置文件加载 bean配置
  • WebApplicationContext 面向Web开发
    从相对于 Web 根目录的路径中装载配置文件完成初始化, 可以获得ServletContext 的引用

spring原理思想

Spring Bean 作用域

  1. singleton(单例)
    多线程下不安全
  2. prototype(原型)
  3. request(http)
    一次 Http 请求中,容器会返回该 Bean 的同一实例
  4. session (http)
    在一次 Http Session 中,容器会返回该 Bean 的同一实例
  5. global session(http)
    在一个全局的 Http Session 中,容器会返回该 Bean 的同一个实例

Spring Bean 生命周期

依赖注入

都是通过方法注入

  1. 构造器方法
  2. setter方法
  3. 静态工厂方法
  4. 实例工厂方法

APO 原理

JDKProxy 和 Cglib代理


MVC 原理

WEB服务器把 客户端Http 请求全转给 控制器 DispatcherServlet
DispatcherServlet 根据请求寻找处理器 Controller
Controller处理后返回ModelAndView给客户端


注释全解

Bean定义

  • @Component :通用的注解,可标注任意类为 Spring 组件。如果一个Bean不知道属于哪个层,可以使用@Component 注解标注。

Bean注入

  • @Autowired 默认按类型装配(byType)自动装配
  • @Resource(Bean名称) 按名称装配(byName)
  • @Inject

Bean作用范围、生命周期

  • @PostConstruct初始化
  • @PreDestroy销毁
  • @Scope作用范围设置

配置类

  • @Configuration
  • @Bean

配置读取

@Value("${property}")
@ConfigurationProperties

SringMVC

  • @Component衍生注解

    1. @Controller : 对应 Spring MVC 控制层,主要用于接受用户请求并调用 Service 层返回数据给前端页面。
    2. @Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao层。
    3. @Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
  • @Controller SringMVC 处理器Controller对象

  • @ResponseBody 用于Controller方法返回的对象,写入http的body区

  • @RestController = @Controller + @ResponseBody

  • http Request 请求处理方法映射

    1. @RequestMapping http路径映射到处理类或方法
    2. @GetMapping() http GET请求路径映射
    3. @PostMapping() http POST请求路径映射
    4. @PutMapping http PUT请求路径映射
    5. @DeleteMapping http DELETE请求路径映射
  • 前后端传值

    • @PathVariable用于获取路径参数,@RequestParam用于获取查询参数。

相关文章: