Spring框架(第二天)

一、 注入

a)  set

  i. JDK

    1.八种基本类型(+包装类)+String

      

<bean id="User" class="com.dsl.test2.User">
    <property name="age">
        <value>18</value>
    </property>
    <property name="name">
        <value>dsl</value>
    </property>
</bean>

 

    2.数组

      

<list>
    <value>1111</value>
    <value>2222</value>
    <value>3333</value>
</list>

 

    3.List

<list>
    <value>1111</value>
    <value>2222</value>
    <value>3333</value>
</list>

  

    4.Set

<set>
    <value>aaa</value>
    <value>bbb</value>
    <value>ccc</value>
</set>

 

    5.Map

<map>
    <entry>
        <key><value>001</value></key>
        <value>dsl</value>
    </entry>
    <entry>
        <key><value>002</value></key>
        <value>dsl2</value>
    </entry>
</map>

 

    6.Properties 集合HashTable的子类 类似于Map<String,String>

    

<property name="age" value="18"/>
<property name="name" value="dsl"/>

 

  ii. 自定义类型(程序员自己定义+开源框架提供的类型) 成员变量注入

  

UserService{
   UserDao ud;        
}



//spring配置文件
    <bean id="UserDao" class="xxx.UserDao"/>
    <bean id="UserService class="xxx.UserService">
        <property name="ud">
                   <ref local="UserDao"/>
        </property>
    </bean>

 

    

b) 构造

<constructor-arg>
    <value>18</value>
</constructor>
<constructor-arg>
    <value>dsl</value>
</construcyor>

  根据标签的个数, 自动匹配对应的构造方法

  注意:构造重载

  构造方法参数不同

  通过标签个数匹配构造方法

  构造方法参数相同

  通过为标签体检type属性  区分调用哪个类型的构造方法

 

<constructor-arg type="int">
    <value>18</value>
</constructor-arg>

 

 

 

二、 目的为成员变量赋值,优势是:解耦和

三 、Spring创建对象和注入的原理

  a) 创建对象

    <bean id="User" class="xxx.User"/> User{int age;String name}

      1.读取配置文件,加载类信息

      2.通过反射创建对应类的对象,反射调用无参构造函数。

  b) 注入

<bean id=”User” class=”xxxx.User”>
    <property name=”age”>
         <value>18</value>
    </property>
    <property name=”name”>
         <value>dsl</value>
    </property>
</bean>
User user =new User();
user.setAge(18);
user.setName(“dsl”)

四、FactoryBean技术

 对象(简单对象 可以通过构造方法直接创建的对象)

 

  对象(复杂对象 不能通过构造方法直接创建的对象,由若干步骤组成)

 

   Connection : 

 

     Class.forName(“oracle.jdbc.OracleDriver”) //com.mysql.jdbc.Driver  

 

     Connection conn = DriverManager.getConnection();   

 

  SqlSession:

 

    Resources.getResourceAsStream(“Myabtis-config.xml”)

 

    New SqlSessionFactoryBuilder().build(is);

 

    Ssf.openSession()

 

 a) FactoryBean开发过程

  i. 类 实现 FactoryBean接口: class ConnectionFactoryBean implements FactoryBean

  ii. 覆盖接口中的所有方法 FactoryBean  方法有3 

  1. //用于书写复杂对象的创建过程的代码,并将创建的复杂对象返回

 

    public Object getObject(){

 

    Class.forName(“oracle.jdbc.OracleDriver”) //com.mysql.jdbc.Driver  

 

    Connection conn = DriverManager.getConnection();  

 

    return conn;

 

    }

  2.//用于返回复杂对象的实际类型

    public Class getObjectType(){

    return Connnection.class

    }

  

  3.//用于控制复杂对象的创建次数

    public Boolean isSingleton(){

    return true;//工厂只会创建一次当前对象  SqlSessionFactory

    return false;//每次创建一个新的对象   connection

    }

  iii.配置文件进行配置

    <bean id=”conn” class=”xxx.ConnectionFactoryBean”/>  Connection

    获取复杂对象:

    Connection  conn = (Connection)ApplicationContext.getBean(“conn”);

 

    注意:如果创建的是复杂对象(实现了FactoryBean接口),通过bena标签ID值获取的对象就是要创建的复杂对象

        1、 isSingleton方法返回值怎么确定  看需求 根据对象的特点定

        2、 获取ConnectionFactoryBean类的对象?

 

          ConnectionFactoryBean cfb = (ConnectionFactoryBean)ApplicationContext.getBean(“&conn”);

 

   

    

 

    

 

转载于:https://www.cnblogs.com/dslnn/p/8902314.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值