spring框架IOC容器和AOP

spring的框架

Spring DAO:Spring提供了对JDBC的操作支持:JdbcTemplate模板工具类 。

Spring ORM:Spring可以与ORM框架整合。例如Spring整合Hibernate框架,其中Spring还提供HibernateDaoSupport工具类,简化了Hibernate的操作 。

Spring WEB:Spring提供了对Struts、Springmvc的支持,支持WEB开发。与此同时Spring自身也提供了基于MVC的解决方案 。

Spring  AOP:Spring提供面向切面的编程,可以给某一层提供事务管理,例如在Service层添加事物控制 。

Spring   JEE:J2EE开发规范的支持,例如EJB 。

Spring Core:提供IOC容器对象的创建和处理依赖对象关系 。

 

IOC容器和注入

bean就是IOC容器,从而达到可以随时用,依赖注入的意思就是配置好权限之后能够使用,容器建好了之后,处理对象的依赖关系

1.set方法

  <property name="orderService" ref="orderService"></property>

2.构造器方法

<bean name="orderAction" class="com.pec.action.OrderAction">
      <constructor-arg ref="orderService"></constructor-arg>
</bean>
<bean name="orderService" class="com.pec.service.imp.OrderServiceImp"></bean>

3.常用的注解的方式

控制层代码

@Autowired   //@Resource
private OrderServiceImp orderService;

服务层代码

@Service("orderService")
public class OrderServiceImp implements IOrderService {

    @Autowired
    private JavaOrderMDaoImp javaOrderMDao;

    @Autowired
    private JavaOrderDDaoImp javaOrderDDao;

    @Override
    public List<JavaOrderMList> findOrderM(OrderSearch search) {
        return javaOrderMDao.findJavaOrderM(search);
    }

    @Override
    public List<JavaOrderDList> findOrderD(OrderSearch search) {
        return javaOrderDDao.findJavaOrderD(search);
    }

}

DAO层代码

@Repository("javaOrderMDao")
public class JavaOrderMDaoImp extends BaseHibernateDAO<JavaOrderM, Serializable> implements IJavaOrderMDao {...}

 

@Component         把对象加入ioc容器,对象引用名称是类名,第一个字母小写
@Component(“name”) 把指定名称的对象,加入ioc容器
@Repository        主要用于标识加入容器的对象是一个持久层的组件(类)
@Service           主要用于标识加入容器的对象是一个业务逻辑层的组件
@Controller        主要用于标识加入容器的对象是一个控制层的组件
@Resource          注入属性(DI), 会从容器中找对象注入到@Resource修饰的对象上
@Autowired         注入属性(DI), 会从容器中找对象注入到@Autowired修饰的对象上

 

面向切面编程AOP

把繁杂的事务处理都放在一个类里面,需要的话直接调用切面,可以在任何时间点调用

术语

横切关注点:分布应用于多处的功能

切面:横切关注点可以被模块化为一个类,这个类被称为一个切面

通知(advice):切面要完成的工作。Spring的通知有5种类型:before、after、after-returning、after-throwing和around这五种类型。

 

连接点(joinpoint):连接点表示在何种操作发生时应用切面。比如方法调用时、修改字段时和抛出异常时等等

切点(pointcut):一般用某个包中的类的明确的方法来指定在何处应用切面,应用切面的这个点便称为切点,一般用切点来指定连接点。

 

应用切面

3种方法

execution(*com.springinaction.springidol.Instrument.play())直接调用切面

用within()和bean来调用切面

使用配置

1.在命名空间中配置好aop

2.定义一个切面类

@component

public class Audience{

    public void takeSeats(){

    }

3.在xml中配置好切面

<aop:config>
    <aop:aspect ref="audience">
    <aop:pointcut id="performance" expression=
*execution(*com.springinaction.springidol.Performer.perform(..))"/>
    <aop:before
        pointcut-ref="performance" method = "takeSeats"/>

就可以在pointcut之前或者之后使用切面的方法进行处理逻辑了
    </aop:aspect>
</aop:config>

 

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值