zoukankan      html  css  js  c++  java
  • 初识Spring笔记

    1. 控制反转---- Spring通过一种称作控制反转IoC   Inversion of Control)的技术促进了低耦合, 当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。IOC 把对象的创建交给了 Spring,降低了我们代码类和类之间的耦合度,方便我们对程序进行扩展和维护

    2. 面向切面----Spring提供了面向切面(AOP   Aspect Oriented Programming)的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transation)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑。在不修改原有代码的基础上增加新的功能,在日志和异常处理方面很常用

    **spring注解

     注解类:相当于一种标记,加上注解就等于为程序打上了某种标记,没加,则等于没加某种标记,看你有什么标记,就去执行相应的命令和干相应的事。

    (1) spring作用在类上的注解有@Component、@Responsity、@Service以及@Controller;而@Autowired和@Resource是用来修饰字段、构造函数或者设置方法,并做注入的。

    (2) 当注解作用在类上时,表明这些类是交给spring容器进行管理的,而当使用@Autowired和@Resource时,表明我需要某个属性、方法或字段,但是并不需要我自己去new一个,只需要使用注解, spring容器会自动的将我需要的属性、方法或对象创造出来。这就是通常所说的依赖注入和控制反转。

    3. applicationContext.xml 的配置的一些标签

    id:唯一标识,不能重复

    name:设置名字,如果有 id 的话可以和别的重复,否则不能

    class:类的全名:包名 + 类名

    scope:设置创建模式
    singleton:单例,只有一个对象,默认的,最常用的(默认)
    prototype:多例,每次都是一个新的对象

    init-method / destroy-method:在对象创建和销毁的时候调用的方法,
    只有在 singleton 下有效,并且方法不能有参数

    lazy-init:默认 false 在 bean factories 创建的时候,创建注册过的所有单例类
    bean factories 在第一使用 getBean 获取单例对象的时候创建
    设置为 true 就是懒加载,只有第一次使用的时候才会去创建对象

    autowire:自动把注册过的 bean 关联到当前 bean 对应的属性上
    byType:如果注册过的 bean 的类型和属性的类型一致,那么进行赋值操作

      这个会实现自动赋值操作

    byName:根据注册过的 bean 的名字自动注入属性

    4. DI:Dependency Inject 依赖注入 创建对象时动态为属性赋值 

      两种方式:setter 注入和 构造方法注入,IOC 是 Spring 帮我们创建对象,DI 是 Spring 帮我们为属性赋值

    1. 通过 setter 方法进行设置

      <property name="name" value="奥迪双钻">

    2. 通过构造方法进行设置(index 是参数的索引,从 0 开始 , index 和 type 可以省略)

      <constructor-arg name="price" value="200"></constructor-arg>

    3. 使用 SpEL 语言赋值:写一些简单的 java 代码

      <property name="name" value="#{'bmw'.toUpperCase()}"></property>

      <property name="name" value="#{user.name + ' 的汽车'}"></property>

    4. p 标签: 需要引入 xmlns:p="http://www.springframework.org/schema/p"      

      在 bean 标签的属性中使用 p:属性名="" 进行赋值操作

      对象赋值需要使用 ref,包括 p 标签也是 p:属性名-ref="bean 的 id"

      <property name="owner" ref="user"></property>

    5. 集合的赋值

        <list></list>  ArrayList
        <set></set>    HashSet
        <map>      HashMap
          <entry>
            <key></key>
            <value></value>
          </entry>
        </map>


        <props>       Properties
            <prop key="">value</prop>
            <prop key="">value</prop>
        </props>

    5. 切入点和切入点表达式

    切入点:
    before:方法执行前,=== 参数校验
    after:方法执行后,无论是否产生异常 === 清理资源
    after-returing:方法正常执行完毕 === 修改返回值
    after-throwing:方法抛出异常 === 包装异常信息
    around:方法执行前后两个点

    pointcut:切入点表达式
    execution(修饰符 返回值 包名.类名.方法名(参数类型))
    修饰符:可以省略
    返回值:不能省略,可以使用 * 代替
    包名:com 不能省,可以使用 * 代替,
    中间的包名也可以使用 * 代替,如果想省略需要写 .. 代替
    类名,方法名:不能省略,可以使用 * 代替
    参数:如果只有一个参数可以使用 * 代替,如果有多个参数可以使用 .. 代替

    6. web 项目

    在web.xml 中作如下设置

            <listener>
                    <listener-class>
                            org.springframework.web.context.ContextLoaderListener
                    </listener-class>
            </listener>
    
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:applicationContext.xml</param-value>
    	</context-param>                   

     
  • 相关阅读:
    在UI上使用BackgroundWorker
    洛谷训练新手村之“洛谷的第一个任务”题解
    洛谷训练新手村之“循环!循环!循环!”题解
    洛谷训练新手村之“BOSS战入门综合练习1”题解
    洛谷训练新手村之“过程函数与递归”题解
    洛谷P1720 月落乌啼算钱 题解 斐波那契数列/特征方程求解
    洛谷训练新手村之“顺序与分支”题解
    洛谷训练新手村之“数组”题解
    [转]特征方程
    洛谷训练新手村之“简单字符串”题解
  • 原文地址:https://www.cnblogs.com/niuxiao12---/p/7491888.html
Copyright © 2011-2022 走看看