zoukankan      html  css  js  c++  java
  • Spring介绍

    一、Spring概述

      简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring的大小和开销都是轻量级,完整的Spring框架可以在一个只有1M多的JAR文件里发布。

       七大模块

    二、Spring优点

    1.方便解耦,简化开发: Spring就是一个大工厂,专门负责生成Bean,可以将所有对象创建和依赖关系维护由Spring管理

    2.  AOP编程的支持: Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。

    3. 声明式事务的支持: 只需要通过配置就可以完成对事务的管理,而无需手动编程

    4. 方便程序的测试: SpringJunit4支持,可以通过注解方便的测试Spring程序

    5. 方便集成各种优秀框架: Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:StrutsHibernateMyBatisQuartz等)的支持

    6. 降低JavaEE API的使用难度Spring: JavaEE开发中一些难用的APIJDBCJavaMail、远程调webservice用等),都提供了封装,使这些API应用难度大大降低

    三、加载Spring容器三种方式

    1. ApplicationContext -- 立即创建,也就是在ApplicationContext创建的时候就立马创建所有的bean。

    //类路径
    ApplicationContext context = new ClassPathXmlApplicationContext("com//demo01/beans.xml");
    
    //文件绝对路径
    ApplicationContext context = new FileSystemXmlApplicationContext("bean文件绝对路径");
    
    //注解
    ApplicationContext context = new AnnotationConfigApplicationContext("userService");

    2. BeanFactory---延迟创建,在用到bean的时候才会创建对应的bean.

    Resource resource = new ClassPathResource("bean.xml");
    BeanFactory factory = new XmlBeanFactory(resource );
    factory.getBean("customerService");    //执行完这句之后,bean才会创建

    四、装配Bean三种方式

    1. 构造方法实例化

    2. 静态工厂方法实例化

    3. 实力工厂方法实例化

    <!--装配bean的三种方式,所谓的装配bean就是在xml写一个bean标签-->
    
     <!-- 第一种方式: new 实现类-->
     <bean id="userService1" class="com.service.UserServiceImpl"></bean>
    
     <!-- 第二种方式:通过静态工厂方法-->
     <bean id="userService2" class="com.service.UserSereviceFactory1" factory-method="createUserService"></bean>
    
     <!--第三种方式:通过实例工厂方法 -->
     <!-- 创建实例factory2 bean-->
     <bean id="factory2" class="com..service.UserSereviceFactory2"></bean>
     <bean id="userService3" factory-bean="factory2" factory-method="createUserService"></bean>
    public void test1(){
        ApplicationContext context = new ClassPathXmlApplicationContext("beans3.xml");
    
        //new 对象
        IUserService userService1 = (IUserService) context.getBean("userService1");
        userService1.add();
    
    
        //静态工厂
        IUserService userService2 = UserSereviceFactory1.createUserService();
        IUserService userService2 = (IUserService) context.getBean("userService2");
        userService2.add();
    
    
        //实例工厂
        //1.创建工厂
        UserSereviceFactory2 factory2 = new UserSereviceFactory2();
        IUserService userService3 = factory2.createUserService();
    
        IUserService userService3 = (IUserService) context.getBean("userService3");
        userService3.add();
    }

    五、Bean的作用域

    类别

    说明

    singleton

    在Spring IoC容器中仅存在一个Bean实例,Bean以单例方式存在,默认值

    prototype

    每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时 ,相当于执行new XxxBean()

    request

    每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境

    session

    同一个HTTP Session 共享一个Bean,不同Session使用不同Bean,仅适用于WebApplicationContext 环境

    globalSession

    一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext 环境

    六、依赖注入Bean属性

    1. 构造器注入

    2. setter方法注入

    3. p命名空间注入 

    4. 集合注入

    5. 注解注入

       @component取代<bean class="">、@component("id")取代<bean id="",class="">

     

      衍生注解:@Repository(“名称”)dao层;@Service(“名称”)service层;@Controller(“名称”)web层;

     七、三级缓存解决循环依赖

    https://blog.csdn.net/f641385712/article/details/92801300

  • 相关阅读:
    C语言文法修改
    C语言文法
    词法分析程序实验报告
    php设置http响应头和数据库查询字符集编码
    提交form前先使用JS进行验证
    iOS 移动端清除按钮的默认样式
    innerText与textContent的异同
    JS事件应用
    docker redis安装
    cmder的快捷键
  • 原文地址:https://www.cnblogs.com/qmillet/p/12545646.html
Copyright © 2011-2022 走看看