Spring 学习总结 四

Spring 的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd>
</beans>

spring的标准的配置文件:
1、根标签是 beans
2、beans 后面的是约束文件说明
3、beans 里面是bean的声明
4、什么是bean:bean就是java对象,spring容器管理的java对象,叫做bean
spring容器创建对象的特点

1、容器对象ApplicationContext:接口
通过ApplicationContext对象,获取要使用的其他java对象,执行getBean(“< bean >的id”)
2、spring默认时调用类的无参数构造方法,创建对象
3、spring读取配置文件,一次创建好所有的java对象,都放在map中。

DI:给属性赋值

spring 调用类的无参构造方法,创建对象。对象创建后给属性赋值。
给属性赋值可以使用

  • xml 配置文件中的标签和属性;
  • 使用注解。

DI分类:1、set 注入,也叫做设值注入;2、构造注入

####### 基于xml的DI
在xml配置文件中使用标签和属性,完成对象创建,属性赋值
1、set注入,也叫设值注入。
概念:spring调用类中的set方法,在set方法中可以完成属性赋值,推荐使用

 简单类型的设值注入,使用value
 <bean id="mySchool" class="com.demo.ba02.School">
        <property name="name" value="北京大学"/>
        <property name="address" value="海定区"/>
    </bean>
<!--引用类型set注入 -->
    <bean id="myStudent" class="com.demo.ba02.Student">
        <property name="name" value="李四"/>
        <property name="age" value="22"/>
        <!--引用类型的赋值-->
        <property name="school" ref="mySchool"/> <!--setSchool(mySchool) -->
    </bean>

2、构造注入
构造注入:spring调用类中的有参数的构造方法,在创建对象的同时,给属性赋值

    <!--构造注入 使用name属性-->
    <bean id="myStudent" class="com.demo.ba03.Student">
        <constructor-arg name = "myname" value="李四"/>
        <constructor-arg name = "myage" value="20"/>
        <constructor-arg name="mySchool" ref="mySchool"/>
    </bean>

    <!--构造注入,使用index,参数的位置,构造方法参数从左往右位置是0,1,2-->
    <bean id="myStudent2" class="com.demo.ba03.Student">
        <constructor-arg index="0" value="张三"/>
        <constructor-arg index="1" value="26"/>
        <constructor-arg index="2" ref="mySchool"/>
    </bean>

    <!--构造注入,省略index属性-->
    <bean id="myStudent3" class="com.demo.ba03.Student">
        <constructor-arg  value="张三"/>
        <constructor-arg  value="26"/>
        <constructor-arg  ref="mySchool"/>
    </bean>

3、引用类型的自动注入
概念:spring可以根据某些规则给引用类型完成赋值,只对引用类型有效,规则byName,byType。

  • byName(按名称注入):java类中引用类型属性名称和spring容器中bean的id名称一样的,且数据类型也是一样的,这些bean能够赋值给引用类型。
<!--byName 自动注入 -->
    <bean id="myStudent" class="com.demo.ba04.Student" autowire="byName">
        <property name="name" value="李四"/>
        <property name="age" value="22"/>
        <!--引用类型的赋值-->
        <!-- <property name="school" ref="mySchool"/>  -->
    </bean>

  • byType(按类型注入):java类中引用类型的数据类型和spring容器中bean的class值是同源关系的,这样的bean赋值给引用类型。

注意:在xml配置文件中,符合条件的对象,只能有一个,多余一个都是报错的。

   <!--byType 自动注入 -->
    <bean id="myStudent" class="com.demo.ba05.Student" autowire="byType">
        <property name="name" value="张三"/>
        <property name="age" value="26"/>
        <!--引用类型的赋值-->
        <!-- <property name="school" ref="mySchool"/>  -->
    </bean>
项目中的使用多个spring配置文件

分多个配置文件的方式:
1、按功能模块分,一个模块一个配置文件。
2、按类的功能分,数据库操作相关的类在一个文件,service类在一个配置文件,配置了redis,事物等等的一个配置文件。

spring管理多个配置文件:常用的是包含关系的配置文件。项目中有一个总的文件,里面是有import标签包含其他的多个配置文件。

总的文件(xml)
<import resource="其他的文件的路径1">
<import resource="其他的文件的路径2">

关键字“classpath:”:表示类路径,也就是类文件(class)所在的目录。spring到类的路径中加载文件什么时候使用classpath;在一个文件中要使用其他的文件,需要使用classpath。
基于注解的DI

基于注解的DI:使用spring提供的注解,完成java对象创建,属性赋值。
注解 使用的核心步骤:
1、在源代码加入注解,例如@Component
2、在spring配置文件中,加入组件扫描器的标签

    <context:component-scan base-package="有注解的包名"/>

1、创建对象的注解
@Component:普通java对象
@Respository:dao对象,持久层对象,表示对象能访问数据库
@service:service 对象,业务层对象,处理业务逻辑,具有事务能力
@Controller:控制器对象,接受请求,显示请求的处理结果,视图层对象。

2、简单类型属性赋值
@Value

3、引用类型赋值
@Autowired:spring提供的注解,支持byName,byType
@Autowired:默认就是byType
@Autowired@Qualifler:使用byName

@Resource:来自jdk中的注解,给引用类型赋值,默认是byName
@Resource:先使用byName,再byType
@Resource(name=”bean的名称“):只使用byName注入

IoC总结

IoC:管理对象的,把对象放在容器中,创建,赋值,管理依赖关系。
IoC:通过管理对象,实现解耦合。IoC解决处理业务逻辑对象之间的耦合关系,也就是service和dao之间的解耦合。

spring作为容器适合管理什么对象:
1)service对象,dao对象。
2)工具类对象

不适合交给spring的对象?
1)实体类。
2)servlet,listener,filter等web中的对象,他们是tomcat创建和管理的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值