Spring配置信息

IOC(控制反转)

Inverse of Control∶ 控制反转

反转了依赖关系的满足方式,由之前的自己创建依赖对象,变为由工厂推送。(变主动为被动,即反转解决了具有依赖关系的组件之间的强耦合,使得项目形态更加稳健

头部配置

<?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-3.0.xsd">

</beans>

IOC为属性赋值(控制反转思想)

   <bean id ="userService" class="com.lang.service.impl.UserServiceImpl">
        <property name="userDao" ref="依赖的ID名"/><!--依赖关系-->
    </bean>

DI依赖注入(实操)

Set注入

自建类型用ref

   <bean id ="userService" class="com.lang.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
    </bean>

基本数据类型用valu
数组相关用对应的关键字

<set/list....>
	<value></value>
</set/list...>

构造注入

<constructor-arg  name="" value="">

自动注入

用autowire属性
这样业务层的dao会自动查找统一配置文件和属性名相同的bean的id
还可以用byType

   <bean id ="userService" class="com.lang.service.impl.UserServiceImpl" auowire="byName">

    </bean>

bean的创建模式

单例模式

工厂创建时创建同一个对象之创建一次,外界获取的是同一个对象
singleton

多例模式

每次调用工厂都是一个新的对象

工厂特性

饿汉式创建优势

工厂创建之后,会将Spring配置文件中的所有对象都创建完成(饿汉式)。
提高程序运行效率。避免多次IO,减少对象创建时间。(概念接近连接池,一次性创建好,使用时直接获取)

生命周期方法

自定义初始化方法∶添加"init-method"属性,Spring则会在创建对象之后,调用此方法。自定义销毁方法∶添加"destroy-method属性,Spring则会在销毁对象之前,调用此方法。销毁∶工厂的close((方法被调用之后,Spring会毁掉所有已创建的单例对象。分类∶Singleton对象由Spring容器销毁、Prototype对象由JVM销毁。

生命周期阶段

在这里插入图片描述

生命周期注解

@PostConstruct初始化
@PreDestroy销毁

代理设计模式

将核心功能与辅助功能(事务、日志、性能监控代码)分离,达到核心业务功能更纯粹、辅助业务功能可复用。

在这里插入图片描述

静态代理设计模式

在这里插入图片描述

动态代理模式

动态创建代理类的对象,为原始类的对象添加辅助功能。

AOP

AOP(AspectOriented Programming),即面向切面编程,利用一种称为"横切的技术,剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其命名为Aspect",即切面。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。

作用

通过动态代理类为原始类的方法添加辅助功能

AOP的依赖

 <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.1.6.RELEASE</version>
    </dependency>

定义切入点

    <!--修饰符 返回值 包.类 方法名 参数表,以下是编制的功能-->
<aop:config>
    <!--修饰符 返回值 包.类 方法名 参数表-->
    <aop:pointcut id="pc_shine" expression="execution(* save())"/>
    <!--组装-->
    <aop:advisor advice-ref="advice功能" pointcut-ref="pc_shine"></aop:advisor>
</aop:config>

表达式写法

在这里插入图片描述

后处理器

在这里插入图片描述

Spring整合mybatis

1、连接池

jdbc.username=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/lang?useUnicode=true&characterEncoding=utf-8
jdbc.driver=com.mysql.jdbc.Driver

2、连接池配置

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
        <context:property-placeholder location="classpath:jdbc.properties"/>
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driverClass}"/>
            <property name="url" value="${jdbc.url}"/><!--通过${}来取配置文件的值-->
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <property name="initialSize" value="${jdbc.init}"/>
            <property name="minIdle" value="${jdbc.minIdle}"/>
            <property name="maxActive" value="${jdbc.maxActive}"/>
         </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations">
            <list>
                <value>classpath:com/lang/dao/*.xml</value>
            </list>
        </property>
        <property name="typeAliasesPackage" value="com.lang.entity"/>
    </bean>
        <bean id="mapperScannerConfiguer9" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <!--dao接口所在的包-->
        <property name="basePackage" value="com.lang.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
</beans>

3 、事务管理器

<bean id="tx"   class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

4、配置事务通知

    <tx:advice id="txManager" transaction-manager="tx">
        <tx:attributes>
            <!--以User为结尾的方法-->
            <tx:method name="*User" read-only="true" isolation="READ_COMMITTED" rollback-for="Exception"/>
            <!--以query开头的方法,切入此方法时,采用对应事务实行-->
            <tx:method name="query*" propagation="SUPPORTS"/>
            <!--剩余所有方法-->
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

注解开发

声明bean

@Service业务类专用
@Repository dao实现类专用
@Controller web层专用
@Component 通用
@Scope 用户控制bean的创建模式

注入

@Autowired 根据类型自动注入
@Qualifier(“”) 根据类型,并根据名称使用 和上面联合使用

@Resource(name=“”) 根据名称自动注入
@Value(“”)简单类型注入

事物控制

@Transactional(rollbackFor=Exception,class) 也可以为方法单独加 放在事务层

注解需要的配置

告诉spring注解的位置

    <context:component-scan base-package="com.lang" ></context:component-scan>

支持事务控制

    <tx:annotation-driven transaction-manager="tx"/>

AOP注解

@Aspect
@Compont开头


@Before
@Around
@AfterThrowing
@AfterReturning(returning=“返回的参数值”)

Spring 集成juint

 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.1.6.RELEASE</version>
        </dependency>

在类上注解
@Runwith(SpringJUint4ClassRunner.class)
@ContextConfiguration(“classpath:applicationContext.xml”)
那样就可以不在测试类中启动spring工厂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值