IoC注解:
XML:
1 | <ben id="" class=""/> |
作用:
被贴的类,交给spring管理(会被创建对象,存储在spring容器中)
注解:
(四个作用一样)
Repository : 一般贴DAO类
Service : 一般贴Service类
Controller : 一般贴Controller类
Component : 非上述三种类型的类
解析器:1
<context:component-scan basePackage="me.cscar.ssm">
xml:1
<bean id="someBean" class="...SomeBean" scope="singleton" init-method="open" destory-method="close"/>
1 | "someBean") ( |
DI注解:
作用:
从容器中找到指定的bean对象,并设置给该字段.
注解:
Autowired
Resource
二者功能一样
解析器:
1 | <context:annotation-config/> |
xml:
1 | <bean id="otherBean" class="..OtherBean"> |
1 |
|
Tx注解:
作用:
增加Service组件支持事务管理
注解:
Transactional
解析器:
1 | <tx:annotation-driven transaction-manager="txManager"/> |
xml配置
配置事务管理器(what)1
2
3<bean id="txManager" class="...DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource"/>
</bean>
配置事务增强(配置事务方法的属性 when)1
2
3
4
5
6
7
8<tx:advice id="txAdvice" tansaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="list*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
配置切入点(where)1
2
3
4<aop:config>
<aop:pointcut expression="execution(* com.huawei.xx.service.*Service.*(..))" id="txPointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>
注解操作:
1:what:配置事务管理器1
2
3<bean id="txManager" class"...DataSourceTransactionManager">
<property name="dataSource" ref="myDataSource"/>
</bean>
2:增加解析器1
<tx:annotation-driven transaction-manager="txManager"/>
3:到service实现类上,使用Transactional注解
MVC注解:
注解:
Controller : 声明当前类为控制器,spring容器创建对象
RequestMapping : 贴在方法上,表示访问当前方法的URL.
使用:1
2
3
4
5
6
7
8
"/hello") (
public class HelloController{
"/say") (
public ModelAndView sayHello(){
return null;
}
}
此时的访问规则: http://localhost:8080/hello/say
AOP注解:
1 | class LogAdvice{ |
XML:1
2
3
4
5
6
7
8
9
10
11<!--what:-->
<bean id="logAdvice" class="..LogAdvice">
<aop:config>
<aop:aspect ref="logAdvice">
<!--where:-->
<aop:pointcut expression="execution(* cn.wolfcode.ssm.*Service.*(..))" id="logPointcut"/>
<!--when:-->
<aop:before method="writeLog" pointcut-ref="logPointcut"/>
</aop:aspect>
<aop:config>
使用注解:
注解:
Aspect 贴在增强类之上,表示一个切面
Pointcut 编写切入点表达式
Before 前置增强
AfterReturning
AfterThrowing
After
Around
解析器
1 | <!-- 解析Component --> |
使用
1 |
|