• 各种注解的应用


    @Autowired用在字段上 或者用在对应的setter方法上 也可以(既会返回字段的注解 也会返回方法的注解 ) @Autowired注解是按 类型装配 对象 该注解有一个required属性 ,该属性取值为true或false true表示字段是必须要装配的 如果在spring容器中没有找到对应的bean 则抛出异常 false 表示字段不是必须要装配的 如果在spring容器中能找到 则装配 如果找不到 则装配为null @Autowired自动装配既可以在注解的组件中装配 也可以在xml中配置的组件中装配 (即在xml和包中找 ) @Autowired的作用是 自动装配,自动根据属性的类型,在spring ioc容器所有资源中找对应类型的bean! 1. applicationContext.xml中找 2. 扫描的包下找 决定能不能找到匹配的bean的必要条件: 1. 类型要与Car一致 2. 要被spring容器管理 结果: 找不见: 且@Autowired(required = true)时,就报错 且@Autowired(required = false)时,就不报错,不注入了! @Autowired注解 找见2个类型与Car一致的 --> xml中有, 扫描的包中也有, 最终用扫描包中的那个 --> xml中2个。报错 ========================================================================================================= @Resource的作用是 1. 先按照被@Resource注解的属性名称来装配,如果找不见指定的名称,就进入第二部 2. @Resource就变得跟@Autowired一样了! 思考,如果按照名称找见了, 且找见了2个名称匹配的bean,一个在xml中,一个在被扫描的包中,最终使用xml中的 ========================================================================================================= @Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上,但他默认按名称装配,如果 按名称装配找不到对象,@Resource注解就会按类型装配 ,但如果有多个匹配的类型就会报错。例子如下: c是名称(先导xml里面找) Car是类型(再到类里面找)如果名称找得到就不按类型找, @Resource注解 ============================================================================================================ @Componet 加这个注解 是让容器进行管理 @Aspect 加这个注解 告诉容器 他不仅仅是一个普通组件 它是一个切面 @Before 前置通知 @After后置通知(value="execution(* * .* (..))")第一个*表示任何访问修饰符 任何返回值类型 第二个* 表示 任意包中的任意类 第三个*表示 任意方法 两个点表示任意参数 ================================================================================================================= 让容器管理 用 @Repository (放到类放到类上面 业务层用 ) @Autowired (按类型装配 它先在xml里面找 ) 业务层管理事务(例子 银行转账 钱不够会自动回滚) 开业务 回滚业务 提交事务(属于横切关注点 ) 核心业务是转账功能(核心业务关注点) 当一个业务有许多需求的时候 就要加切面 简化代码的冗余 提高可读性 ================================================================================================================= 注解的应用场景 业务层用 @Service Dao层 用 @Repository 控制层 用@Contrller 分不清的时候用 @Componet ================================================================================================================= 核心业务和横切关注点分离 ================================================================================================================= 声明式事务 连切面都不用定 (切面和环绕通知都不用写了 因为进行了封装 ) =================================================================================================================
  • 相关阅读:
    巴厘岛的雕塑(sculptures)
    BZOJ4361: isn
    BZOJ2131: 免费的馅饼
    BZOJ4240: 有趣的家庭菜园
    BZOJ5484: [Usaco2018 Dec]Sort It Out
    BZOJ 2151: 种树
    HDU 1285 确定比赛名次(拓扑排序+优先队列)
    申请中文域名并跳转到个人网站(多种方法的尝试)
    Java binarysearch方法
    eclipse2019-12设置中文
  • 原文地址:https://www.cnblogs.com/wangchao422/p/9648203.html
Copyright © 2020-2023  润新知