• Spring(ioc)


    目录

    1.什么是spring,spring ioc的用途

    2.Spring的注入方式

    3.Spring与web容器的整合原理


    1.什么是spring,spring ioc的用途

    Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。
    Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
    然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
    目的:解决企业应用开发的复杂性
    功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
    范围:任何Java应用
    简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
     

    2.Spring的注入方式

    依赖注入的三种输入:
      1.set注入

    1. <bean class = "com.xbb.biz.impl.UserBizImpl1" id = "userBiz">
    2. <bean class = "com.xbb.biz.web.UserAction" id = "userAction">
    3. "userBiz" ref = "userBiz">
    4. "name" value="zhangsan">
    5. "age" value="22">
    6. "hobby" >
    7. 篮球
    8. boy
    9. rap


      2.构造注入

    1. <bean class = "com.xbb.biz.web.OrderAction" id = "orderAction">
    2. "userBiz" ref = "userBiz">
    3. arg name = "name" value="zhangsan">
    4. arg name = "age" value="13">
    5. arg name = "hobby">
    6. 篮球
    7. boy
    8. rap


      3.自动装配
            default-autowire="byType"
            byName:是Spring管理的bean对象的ID进行查找,如果找到不则注入失败:反之
            byType:是Spring管理的bean对象接口实现类进行查找;如果没有或者2个以上,则注入失败,反之成功

    3.Spring与web容器的整合原理

          为什么?

    建模过程十分耗
     

    解决的问题:


      1.建模必须必不可少
      2.建模要保障只执行一次
      3.建模后期望在每个servlet都能够拿到Spring的上下文对象
       

    这么做?


      1.监听器的初始化方法
      2.Sring的上下文要存放在tomact上下文中
     

    IOC的特点-什么是控制反转?


    指的是将创建对象的权利反转给Sring容器来完成

    配置xml

    1. "http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    4. version="3.1">
    5. Archetype Created Web Application
    6. spingConfigLocation
    7. /applicationContext.xml
    8. com.xbb.ioc.listener.SpringLoadListener

     

    SpringLoadListener:

    1. package com.xbb.ioc.listener;
    2. import javax.servlet.ServletContext;
    3. import javax.servlet.ServletContextEvent;
    4. import javax.servlet.ServletContextListener;
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;
    6. import com.xbb.biz.web.UserAction;
    7. public class SpringLoadListener implements ServletContextListener{
    8. @Override
    9. public void contextInitialized(ServletContextEvent sce) {
    10. System.out.println("初始化。。。。");
    11. ServletContext servletContext = sce.getServletContext();
    12. String springLoadListener = servletContext.getInitParameter("spingConfigLocation");
    13. System.out.println(springLoadListener+"....");
    14. //拿到spring的上下文
    15. ClassPathXmlApplicationContext contex = new ClassPathXmlApplicationContext("/spring-context.xml");
    16. //将spring上下文保存到tomcat上下文中
    17. servletContext.setAttribute("springContex", contex);
    18. }
    19. }

    案例:

    1. package com.xbb.ioc.demo;
    2. import org.springframework.context.support.ClassPathXmlApplicationContext;
    3. import com.xbb.biz.web.OrderAction;
    4. import com.xbb.biz.web.UserAction;
    5. /**
    6. * 1.对spring框架进行建模,之后Spring-contex.xml中所有的javabean信息进都会加载Spring容器的上下文中
    7. * 2.上下文中就包含了Spring-contex.xml所有对象
    8. * @author Administrator
    9. *
    10. *
    11. * IOC的特点-什么是控制反转?
    12. * 指的是将创建对象的权利反转给Sring容器来完成
    13. *
    14. *
    15. */
    16. public class Demo1 {
    17. @SuppressWarnings("resource")
    18. public static void main(String[] args) {
    19. ClassPathXmlApplicationContext contex = new ClassPathXmlApplicationContext("/spring-context.xml");
    20. UserAction userAction = (UserAction)contex.getBean("userAction");
    21. userAction.list();
    22. OrderAction orderAction = (OrderAction)contex.getBean("orderAction");
    23. orderAction.list();
    24. }
    25. }

    spring-context.xml:

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns:aop="http://www.springframework.org/schema/aop"
    4. xmlns:context="http://www.springframework.org/schema/context"
    5. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    6. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
    7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    8. <bean class = "com.xbb.biz.impl.UserBizImpl1" id = "userBiz">bean>
    9. <bean class = "com.xbb.biz.web.UserAction" id = "userAction">
    10. <property name="userBiz" ref = "userBiz">property>
    11. <property name="name" value="zhangsan">property>
    12. <property name="age" value="22">property>
    13. <property name="hobby" >
    14. <list>
    15. <value>篮球value>
    16. <value>boyvalue>
    17. <value>rapvalue>
    18. list>
    19. property>
    20. bean>
    21. <bean class = "com.xbb.biz.web.OrderAction" id = "orderAction">
    22. <property name="userBiz" ref = "userBiz">property>
    23. <constructor-arg name = "name" value="zhangsan">constructor-arg>
    24. <constructor-arg name = "age" value="13">constructor-arg>
    25. <constructor-arg name = "hobby">
    26. <list>
    27. <value>篮球value>
    28. <value>boyvalue>
    29. <value>rapvalue>
    30. list>
    31. constructor-arg>
    32. bean>
    33. beans>

  • 相关阅读:
    LeetCode_单调栈_中等_456.132 模式
    win11识别不到外置机械硬盘
    数据科学家的编程语言
    【ACWing】273. 分级(配数学证明)
    linux c与c++库互相调用
    如何在两个不同的conda环境中实现jupyter notebook共同使用,避免重复下载
    计算题概念算法
    新手如何免费创建一个自己的网站?
    刷题学习记录(攻防世界)
    iOS开发之弹窗管理
  • 原文地址:https://blog.csdn.net/m0_68211831/article/details/126181787