快速了解Spring框架

目录

1.IoC

2.DI

3.实例化bean---构造方法

4.实例化bean---静态工厂

5.实例化bean---实例工厂

6.bean的生命周期

7.setter注入

8.构造器注入

9.自动装配(普通和注解)

1.按类型

2.按名称

3.按构造方法

4.注解开发自动装配

10.集合注入

array注入

list注入

set注入

map注入

properties注入

11.数据源对象管理(第三方bean)(注解开发)

bean标签开发第三方bean

注解开发第三方bean

第三方bean依赖注入

12.加载properties文件

注意:

13.容器(获取bean)

14.注解开发定义bean

15.纯注解开发

16.注解开发总结

XML配置对比注解配置

17.注解开发--spring整合mybatis

1.导入依赖

2.设置数据源

18.使用spring整合junit

2.AOP

1.简介

2.作用

3.Spring理念

4.AOP核心概念

5.AOP案例

6.AOP的工作流程

Spring容器启动

读取所有切面配置中的切入点:

初始化bean,判定bean对应的类中的方法是否匹配到任意切入点

获取bean执行方法

6.AOP切入点表达式

语法格式

通配符

书写技巧

7.AOP通知类型

前置通知

后置通知

环绕通知(重点)

返回后通知(了解)

抛出异常后通知(了解)

8.AOP通知获取数据

1.获取参数

2.获取返回值

3.获取异常

9.案例:密码兼容处理

3.事务

1.开启事务管理

2.创建事务管理器

3.告诉spring开启事务

4.Spring事务角色

5.事务相关配置

1.事务配置

2.案例

3.事务传播行为


1.IoC

“控制反转”,它不是一门技术,而是一种设计思想

  1. 开发人员通过 XML 配置文件、注解、Java 配置类等方式,对 Java 对象进行定义,例如在 XML 配置文件中使用 <bean> 标签、在 Java 类上使用 @Component 注解等。

  2. Spring 启动时,IoC 容器会自动根据对象定义,将这些对象创建并管理起来。这些被 IoC 容器创建并管理的对象被称为 Spring Bean。

  3. 当我们想要使用某个 Bean 时,可以直接从 IoC 容器中获取(例如通过 ApplicationContext 的 getBean() 方法),而不需要手动通过代码(例如 new Obejct() 的方式)创建。

        <!--    配置bean(Ioc)-->
        <!--bean标签标示配置bean
                id属性表示给bean起名
                class属性表示给bean定义类型-->
        <bean id="bookDao" class="dao.impl.BookDaoImpl"/>

2.DI

依赖注入,

在面向对象中,对象和对象之间是存在一种叫做“依赖”的关系

<!--配置service和dao之间的关系(DI)-->
    <!--property标签表示配置当前bean的属性
    name属性表示配置的bean的具体属性
    ref表示参照哪一个bean-->
    <bean id="bookService" class="service.impl.BookServiceImpl">
        <property name="bookDao" ref="bookDao"/>
    </bean>
    

3.实例化bean---构造方法

有实例类BookServiceImpl

<bean id="bookService" class="service.impl.BookServiceImpl"/>

4.实例化bean---静态工厂

有一工厂类,方法为静态

public class BookFactory {
    public static BookDao getBookDao()
    {
        return new BookDaoImpl();
    }
}

使用静态工厂实例化bean

<!--    静态工厂实例化bean-->
    <bean id="bookDao" class="factory.BookFactory" factory-method="getBookDao"/>
​
​

5.实例化bean---实例工厂

工厂类的方法非静态 需要实例化工厂类再调用其中的方法

public class BookFactory1 {
    public  BookDao getBookDao()
    {
        return new BookDaoImpl();
    }
}

<!--    实例工厂实例化bean-->
    <bean id="bookFactory1" class="factory.BookFactory1"/>
    <bean id="bookDao" factory-bean="bookFactory1" factory-method="getBookDao"/>

6.bean的生命周期

  1. 实例化->Instantiation

  2. 属性赋值->Populate

  3. 初始化->Initialization

  4. 销毁->Destruction

    销毁前需要关闭容器或者关闭钩子ctx.close

7.setter注入

<property>标签提供setter注入 name表示属性名 ref表示饮用类型 value表示简单类型

<bean id="bookService" class="service.impl.BookServiceImpl">
    <property name="bookDao" ref="bookDao"/>
    <property name="name" value="英俊"/>
    <property name="num" value="23"/>
</bean>

8.构造器注入

<bean id="bookService" class="service.impl.BookServiceImpl">
    <constructor-arg name="bookDao" ref="bookDao"/>
    <constructor-arg name="name" value="英俊"/>
    <constructor-arg name="num" value="23"/>
</bean>

name-->表示实例类构造器中的形参

9.自动装配(普通和注解)

系统自动在配置文件中查找对应的bean

推荐使用按类型

<只能>对应用类型进行操作 <不能>对简单类型进行操作

自动装配的优先级低于setter注入和构造器注入,同时使用会出现自动装配失败

1.按类型

<bean id="bookService" class="service.impl.BookServiceImpl" autowire="byType"/>

注意:1.实例类中必须含有对应类型的构造方法

2.配置文件中必须含有对应的类型的bean 且含有唯一一个

3.实例类中不能含有构造方法

4.要查找bean 可以不取id

2.按名称

<bean id="bookService" class="service.impl.BookServiceImpl" autowire="byName"/>

注意:1.实例类中必须含有对应类型的构造方法

2.配置文件中可以有两个以上类型相同的bean 但是bean的id必须和实例类中的属性名一致

4.注解开发自动装配

引用类型

基于反射设计创建对象并暴力反射对应属性为私有属性初始化数据

在实例类中注入对象----

使用@Autowired根据类型 自动为实例类注入对象 可以不需要set方法

若需要注入的bean有多个相同类型的实例类

1.使用id注入 在其他实例类注解后加入id

2.使用@Qualifiter("实例类注解的id") 必须依赖@Autowired

简单类型

在普通变量上面加@Value(注入值)

从配置文件中载入注入值

使用@Propertysource("文件包路径")导入文件资源 不支持使用通配符*

若引入多个文件 @Propertysource{}("文件包路径1","文件包路径2"})

@Value("${}")使用${}占位符载入注入值

10.集合注入

依赖set方法

<bean id="bookDao" class="dao.impl.BookDaoImpl">
    <property name="与实例类属性名对应">
        <array>
            <value>100</value>
        </array>
    </property>
</bean>
    

list和array可以混用

array注入

注入普通类型

<property name="array">
    <array>
        <value>100</value>
    </array>
</property>

注入应用类型 用<ref>单标签 bean中存放bean的id

<ref bean="bean的id"/>

list注入

和array数组可以替换<list>==<array>

<property name="list">
    <list>
        <value>吕布</value>
    </list>
</property>

set注入

<value>中同样内容不会重复保存

<property name="set">
    <set>
        <value>wudi</value>
    </set>
</property>

map注入

在<entry>标签内部存放key值和value值

<property name="map">
    <map>
        <entry key="1" value="一"/>
    </map>
</property>

properties注入

与其他不同 使用<prop>标签存放内容 key值在内 value在外

<property name="properties">
    <props>
        <prop key="1">一</prop>
    </props>
</property>

11.数据源对象管理(第三方bean)(注解开发)

bean标签开发第三方bean

先在pom.xml中导入依赖

c3p0对象管理则需要导入mysql依赖 (druid 攘括mysql)

<bean id="DateSources" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql///springtest1"/>
    <property name="username" value="root"/>
    <property name="password" value="000927"/>
 </bean>

注解开发第三方bean

使用独立的配置类管理第三方bean

public class jdbcConfig {
    @Bean
    public D
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值