• Spring入门


    Spring最核心的两种技术IOC和AOP
    IOC(控制反转)是指让容器管理对象的生命周期和对象之间关系的维护,而这里的容器指的就是Spring。
    在Spring中,实现IOC思想的方式就是DI(依赖注入),通过配置文件来管理对象的生命周期和对象与对象之间的关系,在XML文件中定义对象,容器通过
    反射机制创建对象,注入关系
    Spring的三种依赖注入方式:
    1.设值注入/属性注入(通过set方法注入)
    属性注入即通过 setXXX() 方法注入 Bean 的属性值或依赖对象,属性注入是实际应用中最常采用的注入方式,
    属性注入要求 Bean 提供一个默认的构造函数,并为需要注入的属性提供对应的 set 方法, spring 先调用
    Bean 的默认构造函数实例化 Bean 对象,然后通过反射的方式调用 set 方法注改入属性值,比如:
    public class User {
    private String name;

    public void setName(String name) {
    this.name = name;
    }
    public void getName() {
    return name;
    }
    }
    设值注入配置:
    <bean id="user" class="com.xxx.User">
    <property name="name" value="zhangsan" />
    </bean>
    2.构造注入(通过构造函数注入)
    public class User {

    private String name;

    private String phone;

    public User(String name) {
    this.name = name;
    }
    ...
    }

    构造注入配置:
    <bean id="user" class="com.xxx.User">
    <constructor-arg value="zhangsan" />
    </bean>


    3.工厂方法注入(现在比较少用)
    --------------------------------------------------------------
    引入其他Bean的方式
    public Class Employee {

    private User user;

    public void setUser(User user) {
    this.user = user;
    }
    ...
    }
    Employee 的 Bean 通过 <ref> 元素引用 user Bean ,建立起 employee 对 user 的依赖:
    配置方式:
    <bean id="user" class="com.xxx.user"/>
    <bean id="emp" class="com.xxx.Employee">
    <property name="user" ref bean="user"/>
    </bean>
    Bean的作用域:
    1.singleton 容器中只有一个Bean
    2.prototype 每次请求都会创建一个新的Bean
    3.request
    4.session
    5.global session
    默认作用域为sinleton
    Spring的事物类型/传播行为(7个)
    1.PROPAGATION_REQUIRED 支持当前事物,如果当前没有事物,就新建一个事物。这是最常见的选择。required英文的意思为必须的
    2.PROPAGATION_SUPPORTS 支持当前事物,如果当前没有事物,就以非事物方式执行
    3.PROPAGATION_MANDATORY 支持当前事物,如果当前没有事物,就抛出异常 mandatory的英文意思为强制的,命令的
    4.PROPAGATION_REQUIRES_NEW 新建事物,如果当前存在事物,将当前事物挂起 require的英文意思为要求
    5.PROPAGATION_NOT_SUPPORTED 以非事物方式执行操作,如果当前存在事物,就将当前事物挂起
    6.PROPAGATION_NEVER 以非事物方式执行,如果当前存在事物,则抛出异常
    7.PROPAGATION_NESTED 如果当前存在事物,则运行在一个嵌套的事物中。如果当前没有事物,就和1.PROPAGATION_REQUIRED操作类似。
    它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。nested的意思为嵌套的

  • 相关阅读:
    LeetCode34 Search for a Range
    LeetCode32 Longest Valid Parentheses
    LeetCode33 Search in Rotated Sorted Array
    LeetCode31 Next Permutation
    LeetCode30 Substring with Concatenation of All Words
    LeetCode29 Divide Two Integers
    2016 Multi-University Training Contest 8
    2016 Multi-University Training Contest 9
    Gym 100285G Cipher Message 3
    背包九讲
  • 原文地址:https://www.cnblogs.com/sstone/p/6515208.html
Copyright © 2020-2023  润新知