美文网首页
Spring基础学习笔记

Spring基础学习笔记

作者: Loistein | 来源:发表于2019-06-27 11:07 被阅读0次

    Spring

    • Spring-core: IoC、依赖注入
    • Spring-beans:工厂模式微妙实现、移除了编码式单例需要,把配置和依赖从实际编码逻辑中解耦
    • Context: core、bean模块基础上建立。ApplicationContext接口是Context模块焦点
    • Spring-expression: 强大表达式语言

    Spring-IoC: Inverse of Control 控制反转

    • IOC容器具有依赖注入的功能,可创建对象,IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象之间的依赖
    • POJO: plain ordinary java object
    • BeanFactory容器:最简单,移动设备或者applet适用,最常用XMLBeanFactory
    • AppliacationContext容器:添加了更多企业特定功能、较高级,常用接口实现:
      FileSystemXmlApplicationContext:需提供xml完整路径
      ClassPathXmlApplicationContext:从 CLASSPATH 中搜索 bean 配置文件
      WebXmlApplicationContext:web 应用程序的范围内加载在 XML 文件中已被定义的 bean
    • SpringBean的定义:基于XML配置文件、基于注解、基于Java配置
    • Bean Scope作用域:
      singleton (默认) 容器仅存在一个Bean实例;
      prototype 每次调用,都返回一个新实例;
      request 每次http请求都会创建新bean;
      session 同session共享bean; global-session

    Spring Bean生命周期:定义-> 初始化 –> 使用 -> 销毁

    • 初始化,声明inti-method; 销毁,声明destroy-method
    • 框架使用元素default-init-method、default-destroy-method, 为多个bean提供初始化和销毁方法
    • Spring Bean后置处理器:ApplicationContext 会自动检测由 BeanPostProcessor 接口的实现定义的 bean,注册这些 bean 为后置处理器,然后通过在容器中创建 bean,在适当的时候调用它
    • Spring Bean 定义继承 parent = ***,如果加上定义abstract="true",它仅仅作为一个纯粹的模板,充当自定义的父定义使用

    Spring依赖注入:

    • 基于构造函数的依赖注入:
      <constructor-arg ref="spellChecker"/>
      当参数不止一个时,按照顺序传递
      使用 type 属性显式的指定了构造函数参数的类型,容器也可以使用与简单类型匹配的类型
      <constructor-arg type="int" value="2001"/>
      <constructor-arg type="java.lang.String" value="Zara"/>
      使用 index 属性来显式的指定构造函数参数的索引
      <constructor-arg index="0" value="2001"/>
      <constructor-arg index="1" value="Zara"/>
    • 基于设值函数的依赖注入:
      <property name="spellChecker" ref="spellChecker"/>
      p-namespace 以一种更简洁的方式重写
      p:name="John Doe" p:spouse-ref="jane"
    • Spring 注入内部Beans:
      <bean id="outerBean" class="...">
      <property name="target">
      <bean id="innerBean" class="..."/>
      </property> </bean>
    • Spring 注入集合:<list> <set> <map> <props>
      注入空字符串:<property name="email" value=""/>
      注入NULL: <property name="email"><null/></property>

    Spring自动装配 autowire属性

    • ByName:autowire=" ByName "
    • ByType:autowire=" ByType "
    • 由构造函数自动装配:autowire="constructor"

    Spring基于注解的配置:<context:annotation-config/>

    • @Required应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常
    • @Autowired可以在 setter 方法中/或者属性中/构造函数中被用于自动连接 bean, 当 Spring遇到一个在 setter 方法中使用的 @Autowired 注释,它会在方法中视图执行 byType 自动连接。
      @Autowired 的(required=false)选项,关闭默认行为,不传也不报错
    • @Qualifier 当有多个类型相同的bean时,通过这个注解过滤
    • Spring JSR-250 注释:@PostConstruct 初始化、 @PreDestroy注销、@Resource使用一个 ‘name’ 属性,该属性以一个 bean 名称的形式被注入。你可以说,它遵循 by-name 自动连接语义
    • 基于Java的配置:
      @Configuration @Bean
      ApplicationContext ctx = new AnnotationConfigApplicationContext(HelloWorldConfig.class);
      @import 注解允许从另一个配置类中加载 @Bean 定义
      @Scope 指定范围

    Spring 框架的AOP:

    跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等

    Spring JDBC框架:

    • JdbcTemplate 类
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/TEST"/> 
    <property name="username" value="root"/> 
    <property name="password" value="password"/> 
    </bean>
    

    jdbcTemplateObject = new JdbcTemplate(dataSource)

    • NamedParameterJdbcTemplate 类
    • SimpleJdbcTemplate 类
    • SimpleJdbcCall 可以被用于调用一个包含 IN 和 OUT 参数的存储过程

    事务特性

    ACID: Atom Consistency Isolation Duration
    MVC:Model 数据; View 视图; Control 业务逻辑、返回对应view

    相关文章

      网友评论

          本文标题:Spring基础学习笔记

          本文链接:https://www.haomeiwen.com/subject/jyelcctx.html