IOC相关
-
基于xml配置
-
实例化bean的三种方式
无参构造函数
< bean id="" class="">< /bean>使用静态工厂
< bean id="" class="" factory-method="">< /bean>使用实例工厂
< bean id="" class="" >< /bean> --配置实例工厂类
< bean id="" class="" factory-bean="" factory-method="" >< /bean> -
依赖注入
构造函数注入
set方法注入
< bean id="" class="">
< property name="" value="">< /property>
< property name="" >
< set>
< value>< /valut>
< /set>
< /property>
< property name="" >
< map>
< entry key="" value="">< /entry>
< /map>
< /property>
…
< /bean>p名称空间注入(本质还是set注入)
-
-
基于注解配置
需要先在spring配置文件中开启注解扫描
< context:component-scan base-package="">< /context:component-scan>用于代理对象的@Component,@Controller,@Service,@Repository
作用相同,只是用在三层架构的不同层用于注入数据
@Autowired:自动按类型,再按id
@Qualifier:一般用于参数注入
@Resource:指定id注入
@Value:注入基本类型指定值用于改变作用范围
@Scope -
spring整合Junit
使用@RunWith注解,传入参数SpringJUnit4ClassRunner.class
使用@ContextConfiguration指定spring配置文件的位置
两个注解都是在类上使用这样在测试中就可以使用注入了。
AOP相关
使用动态代理的方式实现业务层的事务管理。在spring框架中,把重复的代码抽取出来,使用配置的方式交给spring实现。
- 使用xml配置
//1.导入约束
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
//2.配置通知类
//3.配置<aop:config>
<aop:config>
//execution([修饰符] 返回值类型 包名.类名.方法名(参数))
<aop:pointcut expression="expression()" id="">
</aop:pointcut>
<aop:aspect id="" ref="">
//xxx表示通知类型:before,after-returning,after-throwing,after,around
<aop:xxx method="" pointcut-ref=""></aop:xxx>
</aop:aspect>
</aop:config>
- 使用注解配置
@Aspect:作用在类上,表明当前类是一个切面类,
@Before,@afterreturning,@afterthrowing,@after,@around:作用在方法上,表示通知类型,作用同< aop:xxx>标签
//1.导入约束
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
//2.开启注解扫描
<context:component-scan base-package=""></context:component-scan>
//3.开启注解配置支持
<aop:aspectj-autoproxy/>
声明式事务管理
xml配置方式
- 导入jar包
- xml配置文件中引入坐标
- 配置事务管理器
< bean id=“txManager” class=“com.itheima.utils.TransactionManager”>
< property name="" ref="">
< /property>
< /bean> - 配置事务管理器的属性
< tx:advice id=“txAdvice” transaction-manager=“transactionManager”>
< tx:attributes>
< tx:method name="" read-only="" propagation=""/>
< /tx:attributes>
< /tx:advice> - 配置< aop:config>
< aop:config>
<aop:pointcut />
< aop:aspect></aop:aspect>
<aop:advisor advice-ref=“txAdvice” pointcut-ref=“pt1”/>
</aop:config>
注解配置方式
在业务层实现类上使用@Transactional,作用同< aop:advisor>标签。