spring初学者理解及学习

Spring属性注入理解

先来谈下对于spring中xml与java类间的理解,在spring中通过添加对于spring框架类的引用 便可以在xml中使用相应关键字,而这些关键字以我目前的理解便是spring开发中的核心要素 通过xml文件中的这些关键字与java类的配合来更快更好的实现功能。

属性注入

属性注入一般有三种方式

  • 构造参数:在构造参数中传递类中属性的值

  • set值设定:通过set()方法设置

  • 接口实现:通过实现接口中的方法 来将值设定进去

    <bean id="user" class="spring.User">
    <constructor-arg name="username" value="liutianbo"></constructor-arg>
    </bean>
    <bean id="bood" class="spring.Bood">
    <property name="boodname" value="jiuyangshengong"></property>
    </bean>

这里一个bean就代表一个java类,其中id里的值代表我们给这个 java类在spring起的名字 而class则代表这个类的绝对路径,这个bean里可能有着各种各样的关键字 他使我们对这个bean进行加工修饰 例如constructor-arg这个就代表当使用有参构造方法来注入属性时该用的关键字 它里面的name代表着有参构造函数中 参数的名字 value字如其名 代表值 property关键字 则是在使用set方法注入时用的关键字 其中name的值代表所要set的属性的名字 value含义同上
注入对象属性:


<bean id="bood" class="spring.Bood">
<property name="boodname" value="jiuyangshengong"></property>
</bean>
<bean id="girl" class="spring.Girl">
<!-- bean代表的是类 property代表的是类中的属性-->
<property name="user" ref="user"></property>
</bean>

name代表属性名称 ref里的值则为在spring写下的bean的id
注入复杂类型属性:属性的类型不只简单的string 对象类型 还有array、map、list等复杂类型

<bean id="arrays" class="">
<!-- 数组 -->
<property name="array">
    <list>
        <value>小刚</value>
        <value>小强</value>
        <value>小宫</value>
    </list>
</property>

<!-- list -->
<property name="list">
    <list>
        <value>小红</value>
        <value>小花</value>
        <value>小璐</value>
    </list>
</property>

<!-- map -->
<property name="map">
    <map>
        <entry key="1" value="小1"></entry>
        <entry key="2" value="小2"></entry>
        <entry key="3" value="小3"></entry>
    </map>
</property>

<!-- properties -->
<property name="properties">
    <props >
        <prop key="化学老师">好人</prop>
        <prop key="语文老师">好人</prop>
        <prop key="物理老师">好人</prop>
    </props>
</property>
</bean>

以上便是属性注入我的目前所学。

IOC和DI的关系

IOC即控制反转 而DI则是依赖注入 控制反转是将写代码时类的创建这些事交给spring框架,一反之前由自己创建的习惯,将创建对象的控制权力交给spring框架,这便是控制反转。
DI则是依赖注入,所谓依赖注入,就是在生成对象的时候我们需要给对象的各个属性赋值,而很可能我们所要赋值的某个属性与其他类有依赖关系,即它的值需要某些其他类来参与生成,但这时候很明显,就与其他类有了耦合,就如小孩如果想要玩玩具那么应该由家长(IOC)来提供这些玩具,而不是小孩去主动寻找拿取这些玩具。IOC包含着DI,而DI也依赖于IOC。

Spring如何整合web项目

在写测试代码的时候,都是

ApplicationContext context=new ClassPathXmlApplicationContext("springmvc.xml");

这样来加载配置文件,但是实际项目不能写一个功能就调用这个函数,消耗性能 所以一般都是在项目启动时来加载,将加载配置文件和创建对象的过程放在服务器启动的时候。大概过程是:在服务器启动的时候,会创建一个ServletContext对象,使用监听器可以监听到ServletContext的创建,当监听到的时候加载配置文件并把配置文件中的对象创建出来用setAttribute()方法放到ServletContext域中,而等到要获取的时候,再用getAttribute()方法去得到,而监听器就是实现了ServletContextListenner接口的类。

Spring注解

  • 代码里的特殊标记,使用注解可以完成功能。
  • 注解写法:@注解名称(属性名称=属性值)
  • 注解使用在类上面,方法上面和属性上面

注解使用方式

在xml文件中引入新的约束,然后在配置文件中加入

    <!-- 开启注解扫描 -->
    <context:component-scan base-package=""></context:component-scan>

其中base-package的值就是你所要扫描的包路径

Spring中常用的bean管理的注解

  • @Component
  • @Controller:Web层
  • @Service:业务层
  • @Repository:持久层
    从功能上来讲以上,以上的注解都是一致的 之所以分类是标注在类的用途上的区别,使其更清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值