A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小强皮厚 中级黑马   /  2018-1-13 21:23  /  1417 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

spring

介绍:spring是一个一栈式的分层轻量级框架,以IoC和AOP为内核.
spring是一个容器
使用基本的javabean来完成以前只能由EJB完成的工作,取代了EJB的臃肿,低效的开发模式

IoC:Inverse of Control        控制反转
        创建对象的操作的权利交给spring框架来处理
        实现原理:配置文件+反射+工厂模式
                Class.forName("..."),通过全路径名 获取class文件
        目的:解耦合
DI:dependency injection依赖注入
        通过spring框架的配置文件注解来帮你对类变量赋值
AOP:Aspect Oriented Programming 面向切面编程

对于服务器的三层架构,spring对每一层都有所支持
在表示层提供了与struts2框架的整合
在业务逻辑层可以管理事务,记录日志等
在持久层可以整合hibernate,jdbcTemplate等技术

获取bean的三种方式
BeanFactory
ClassPathXMLApplicationContext
FileSystemXMLApplicationContext

spring的优点
        方便解耦,简化开发
        AOP编程的支持
        声明式事务的支持
        方便程序的测试
        方便集成各种优秀框架
        降低javaEE API的使用难度

spring整合jdbcTemplate
spring整合事务管理

spring框架基本组成
        --core container
          beans和core,提供了spring框架最基本的功能
        --context,上下文对象
          spel,spring提供的一个表达式语言
        --DATA Access/integra
          数据访问
          集成
        --Web
          spring提供springMVC
          也可以与其他的web层进行集成
        --AOP
          大部分情况下是使用动态代理来实现
        --Test
          使用spring框架方便进行测试

ApplicationContext和BeanFactory关系
        ApplicationContext扩展了BeanFactory接口
        BeanFactory采取延迟加载只有在getBean时才会实例化Bean
        AppliCationContext它会在配置文件加载时,就会初始化Bean,
        并且ApplicationContext它提供不同的应用层的Context实现。
        例如在web开发中可以使用WebApplicationContext.

在开发中我们一般使用的是ApplicationContext,真正使用的是其实现类,
        FileSystemXmlAppliCationContext 根据文件路径获取
        ClassPathXmlApplicationContext  根据类路径获取

Bean的实例化方式
        无参构造
        静态工厂方法(一般不用)
        实例工厂方法

在bean声明时它有一个scope属性,它是用于描述bean的作用域。
可取值有:
        singleton:单例 代表在spring ioc容器中只有一个Bean实例 (默认的scope)
        prototype多例 每一次从spring容器中获取时,都会返回一个新的实例
        request 用在web开发中,将bean对象request.setAttribute()存储到request域中
        session 用在web开发中,将bean对象session.setAttribute()存储到session域中

BeanFactory和applicationContext的区别?  
        BeanFactory是延迟加载
        applicationContext是加载配置文件就创建对象

Bean的生命周期 (了解)        
  1、对bean进行实例化属性赋值
  2、交给applicationContext进行管理
  3、功能的扩展  (前置扩展和后置扩展)
  4、自定义的初始化
  5、方法的操作
  6、销毁
       
属性注入 (掌握)
  1、使用构造器注入
  2、使用setter方法注入
  3、使用c和p命名空间进行注入

注入的类型
  1、普通类型
  2、注入其他的bean  ref
  3、集合属性的注入   list  set  map   props


spel表达式   #{}  (掌握)

注解方式开发 (重点)

实体bean的声明  
     @Component  声明是一个组件
         @Controller  声明是在web层实体类
         @Service   声明在业务层的操作
         @Repository 声明在持久化层的操作
         
属性注入方式
     @Value进行普通值的注入
     @Autowired 根据类型进行匹配
         @Qualifier 根据名称进行匹配
         @Resource(name="名称") 根据类型进行匹配的
     名称指的是bean的id的值  如果没有设置 默认是类名 首字母小写
         
其他注解(了解)
      @Scope设置bean的作用域
      @PostConstruct 用来做初始化
          @PreDestroy用来销毁的


使用spring来整合junit (了解)
    1、需要在测试类上写
                @RunWith(SpringJUnit4ClassRunner.class)
                @ContextConfiguration(locations="classpath:applicationContext.xml")
   2、根据情况写测试方法  
     @Autowired
         private IuserService userService;
         @Test
         public void test1(){
          userService.add();
         }

使用spring在web项目中使用?(重点  SSH整合之后还是这样使用的)
        1、在web.xml中配置listener
        <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
    2、配置applicationContext.xml的位置
         <context-param>
                <param-name>contextConfigLocation</param-name><!--这是一个固定值不能修改  -->
        <param-value>classpath:applicationContext.xml</param-value>
     </context-param>
         
bean的作用域
    singleton 单例  一般情况下 springmvc框架默认是这个设置
        prototype  多例  如果是和struts2整合工作中设置为prototype
        request  同一个请求中
        session  同一个会话中

         


1 个回复

倒序浏览
我来占层楼啊   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马