zoukankan      html  css  js  c++  java
  • Spring泛型注入数据

    注解:

    @Autowired(required=true)

    required=false 告诉Spring容器,找不到匹配的bean时 控制台不会报错

    required=true   告诉Spring容器,找不到匹配的bean时 控制台抛出异常

    面试题:在bean标签中,ID和name属性,有啥区别?(https://blog.csdn.net/dys1990/article/details/6755317)

      

    简单的说:id用来标识bean,是唯一的,且只有一个;name定义的是bean的alias,可以有多个,并可能与其他的bean重名。

    详细的说:

    id是唯一标识bean.不能用特殊字符:×#@ ,不能用数字开头。在bean引用的时候只能用id指向你需要的bean;

    name 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3”,用逗号隔开。

    通过id和name都可以取出该Bean.

    @Autowired 和@Resource

      @Autowired可以出现的地方@Resource也可以出现   。

      作用一样,但厂家不一样。@Autowired   是Spring的    import org.springframework.beans.factory.annotation.Autowired;

       @Resource  是JavaEES的     import javax.annotation.Resource;       (1)他的注解要求提供一个bean属性的名字 ,若属性为空,则自动采用注解标注的名字或方法名作为bean的名称。没有标注,默认按名称进行装配(注入对象),如果找不到与之匹配的名字,则按类型进行匹配

    如果name属性一旦指定,则必须按名称进行装配,就不会有如果名字对应不上,则按照类型装配一说

    面试题:@Autowired 和@Resource的区别:

    都用来注入数据。对象的(装配bean的)   可以卸写在字段上  set方法上

    @Autowired  默认按类型装配     @Autowired  关联两个层      

    @Resource默认按名称进行装配

    <!--
    全注解
    -->
    <!-- 用@Autowired就得写 这个 注解配置 -->     加代码注解
    <context:annotation-config></context:annotation-config>
    <!-- 扫描指定文件夹,将扫描到的文件交给Spring容器进行bean管理-->       实例化对象交给备案管理
    <context:component-scan base-package=""></context:component-scan>

    @Repository   //  @Repository 仓库    实例化dao 层对象    (写到实现类上)

    @service  

    Spring     根据注解     执行     controller   层  ------service层--------dao层

     实体类注解:  @Component   组件的意思       这里是把。。。实例化对象     如果是实体类,则在Spring中,也是在需要的时候,在Spring容器中纳入管理的,那么必须使用Spring注解

    1.泛型依赖注入数据:

      

    Base Service<T>  泛型 T 形参  可以放任意类型         BaseRespositroy<T>   被Base Service<T>   调用    --------->  引用

    3.

      两个基类,分别是BaseService和BaseRespository,带有泛型的2个类中,会定义一些我们常用的方法:save update,delete 等等

    2)BaseService和BaseRespository 存在一个引用关系,以便在BaseService中调用BaseRespository.

    3)综上:UserService与UserPeposity

    二、2019.2.25   Aop   面向切面编程

    public class Security {

    //切面 public void checkSecurity(String username,String psw){ //通知 System.out.println("进行安全检查 "+username+" "+psw); } }

    配置文件如下

    <bean id="security" class="com.cstp.service.Security" />

    <!-- 定义切面对象 --> <bean id="userManager" class="com.cstp.service.UserManagerImpl" /> <!-- 创建接口实现类对象 -->

    <aop:config>

    <!--所有的切面和通知都必须定义在aop:config元素内部 --> <aop:aspect ref="security"> <!-- 配置切面 -->

    <!-- 声明切入点 -->

    <aop:pointcut id="userManagerPointcut" expression="execution(* com.cstp.service..*.save*(..)) and args(username,psw)"/>

    <!--声明前置通知,在匹配方法执行前运行--> <aop:before method="checkSecurity" pointcut-ref="userManagerPointcut"/> </aop:aspect> </aop:config>

    ------------------------------------------------------------------

    <!-- 声明切入点 -->

    <aop:pointcut id="userManagerPointcut"

    expression="execution(* com.cstp.service..*.save*(..)) and args(username,pwd)"/>

    expression:表达式    (* com.cstp.service..*.save*(..))   第一个 * 表示    方法的返回值          运行service  包下的所有的类的所有的以save开头的方法   必须传两个参数(和检测方法有关)   

    args(username,pwd)    args 是检测方法传的参数

    那对象进行关联   对对应  基型 的关系关联     关联指定  的这个对象 ref="security" 所在的这个类的   这个方法   checkSecurity运行

    ------------------------AOP注解-------------------------------------------------

    java——Arrays.asList()方法   Arrays.asList() 是将数组作为列表

    https://www.cnblogs.com/tina-smile/p/5056174.html        

    public class Test {
        public static void main(String[] args) {
            Integer[] a = {1,2,3,4};
            List list = Arrays.asList(a);
            System.out.println(list.size());  //4
        }
    
    }

    普通的类   交给Spring容器管理    @compnent  

  • 相关阅读:
    4-9 路由 URL 和参数(1)
    pycharm开发时bug提示设置
    【Camera】Camera中光圈系数概念以及光圈的作用
    Android功耗(9)---MTK功耗问题分析1
    【知识普及】摄像机常用专业术语(上)
    Android 功耗(8)---如何找到阻止进入deep idle SODI的元凶
    Android功耗优化(7)---如何分析wakelock(wakeup source)持锁问题
    Linux内核虚拟内存管理之匿名映射缺页异常分析
    Android 功耗(6)---整机功耗测试
    Android 功耗(5)----功耗调试
  • 原文地址:https://www.cnblogs.com/cxqbk/p/10430358.html
Copyright © 2011-2022 走看看