入门Spring-02

    技术2022-07-31  94


    title: 入门Spring_02 date: 2020-06-07 20:25:31 tags:

    特殊值的注入问题

    value和注入方式的区别

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxComir4-1593681149893)(https://s1.ax1x.com/2020/06/07/tRFRzj.png)]

    特殊值注入: 1.使用<![CDATA[ ]]>标记 2.使用XML预定义的实体引用 给对象类型赋值null: <property name="name" > <null/> --->注意 这里没有<value> </property> 给对象类型赋空值: <property name="name" > <value></value> </property>

    在ioc中定义bean的前提:该bean的类必须提供 无参构造

    各种类型的自动装配

    自动装配(只适用于ref类型): 约定优于配置 自动装配: <bean id="course" class="org.yishan.entity.Course" autowire="byName|byType|constructor|no"> buName本质就是byId byName: 自动寻找其他bean的id值=该Course类的属性名 byType: 其他bean的类型(class)是否与该Course类的ref属性类型一致 (注意,此种方式必须满足:当前Ioc容器中只能有一个Bean满足条件) constructor: 其他bean的类型(class)是否与该Course类的构造方法的类型一致;此种方式的本质就是byType 可以在头文件中一次性将该ioc容器的所有bean统一设置成自动装配: <beans xmlns="http://www.springframework.org/schema/beans" ...... default-autowire="byName"> 自动装配虽然可以减少代码量,但是会降低程序的可读性,使用时需要谨慎。

    使用注解定义bean:通过注解的形式将bean以及相应的属性值放入ioc容器

    <context:component-scan base-package="org.yishan.dao"> </context:component-scan> Spring在启动的时候,会根据base-package在该包中扫描所有类,查找这些类是否有注解@Component("studentDao"),如果有,则将该类加入Spring Ioc容器

    @Component细化

    dao层注解:@Registered service层注解:@Service 控制器层注解:@Controller

    使用注解实现事务(声明式事务)

    目标:通过事务使以下方法要么全成功,要么全失败 public viod addStudent(){ //增加班级 //增加学生 //增删改查 } a.引jar包 spring-tx-4.3.9.RELEASE.jar mysql-connector-java-8.0.11.jar commons-dbcp.jar 连接池使用到的数据源 commons-pool.jar 连接池 spring-jdbc-4.3.9.RELEASE.jar aopalliance-1.0.jar b.配置 jdbc\mybatis\spring 增加事务tx的命名空间 <!-- 增加对事务的支持 --> <tx:annotation-driven transaction-manager="txManager" /> c.使用 将需要成为事务的方法前增加注解: @Transactional(readOnly=false,propagation = Propagation.REQUIRED)
    Processed: 0.015, SQL: 9