• spring复习(第二天上午)(黑马版)


    一 .快速入门

    第一步  导入依赖

    第二步:创建dao接口和dao实现类

    创建dao接口

    创建dao实现类

    第三步:创建service接口和service实现类

    创建service接口

    创建service实现类

    解释:用service调Dao

     第四步:在UserDaolmpl.java 类上打注解@Component

    第五步 在UserServicelmpl.java 类上打注解@Component

    第六步:在UserServicelmpl.java 类上定义属性,在属性上打注解, @Autowired

    第七步:在xml里面打开注解的扫描开关

    注解的扫描开关

    第八步:测试

    运行结果:

    注解+xml方式

     二 . 扫描包

     三层:web层  service层 dao层

    三 . Ioc注解

    1 .@Component:(掌握)

    A  .相当于xml里面的 标签,用来告诉spring要创建这个类的对象
    B spring针对着三层架构,定义出来更符合语义的三个注解:
        @Controller : 打在web层   常用
        @Service : 打在service层    常用
        @Repository : 打在dao层    mybatic后就不能在打了
    C. 可以通过这些注解的value属性来设置 对象的id值,如果不设置,那么默认的id值就是
        首字母小写的类名!
        UserServiceImpl02 ====> userServiceImpl02

    dao层------@Repository---用来告诉spring要创建这个类的对象

    service层-----@Service  ---用来告诉spring要创建这个类的对象

    测试:

    理解------可以通过这些注解的value属性来设置 对象的id值,如果不设置,那么默认的id值就是首字母小写的类名!UserServiceImpl02 ====> userServiceImpl02

    第一步:

    第二步:测试

    value属性:bean的唯一标识 (id值)。如果不配置,默认以首字母小写的类名为id

    2  .@Scope(了解)

    @Scope:
        A. 相当于xml里面的标签的 scope 属性, 用来控制单例或者多例,默认是单例
        B. 取值:
            @Scope("singleton") : 表示创建的实例是单例
            @Scope("prototype") : 表示创建的实例是多例

    3   .@PostConstruct和@PreDestroy(了解)

    四.  DI注解

    1 .@Autowired:

            A. 作用: 使用来注入对象的。
           B. 特征:
                B.1 @Autowired 是按照属性的类型去spring的容器里面找对象匹配,如果只有一个对象满足这种类型关系那么就注入该对象!
               B.2 那么如果在容器当中有多个对象满足这种类型关系,还会拿着属性名当成id名再去匹配一次,如果匹配上了就注入对象。 如果匹配不上,就会报错!

    *****解释有多个对象满足这种类型关系

    解决办法

    假如注入UserServiceImpl03的对象

    方法一  加id-userDao

     

     方法二:写实现类型不写接口类型  一般不写 一般写接口  为了让能接的东西多点

    方法三 把属性名改成id名

    2 .@Qualifier

    1. 作用:
        搭配@Autowired使用,用来告诉@Autowired,要根据指定的id去找对象注入!
        不能单独使用!

    3  .  @Resource

    作用:
        等价于 @Autowired + @Qualifier 注解。它是根据指定的id来找对象注入。

    总结:@Autowired  @Qualifier  @Resource  都是用来注入对象的

    绝大多数情况下,只要使用@Autowired注解注入即可

    4 .@Value

     作用:
        1.1 用来注入普通的数据,更多的时候使用来注入properties里面的数据
        1.2 要记得先导入properties文件
        1.3 在@Value注解里面使用 ${"properties里面的KEY"}

    第一步:

    第二步:导入

    第三步:注入

     五  纯注解

    纯注解:去掉的方式

    1.@Configuration

    (1)标记这个类是一个配置类,等价于 applicationContext.xml
    (2)@Configuration注解是从 @Component注解 衍生出来的,所以它也会被spring管理起来,创建对象

    2.@ComponentScan  

    用来告诉spring要扫描哪个包。

    第一步:导入依赖

    第二步:创建dao和dao实现类

    第三步:创建service和service实现类

    第四步 打注解

    第五步:service要用dao

    第六步:创建配置类

    第七步  测试

    3.@PropertySource

    用来导入外部的properties文件
    如果在编写文件名称的时候,有背景色,那么可以加上 classpath:
        @PropertySource("classpath:db.properties")

    第一步:

    第二步:在配置类里面导入db.properties

     第三步:

    第四步:测试

    *******可以要AppConfig类的对象调show方法, 因为这个上面有@Configurathion,@Configurathion的上面又是一个@Compoent

    4.@Import

    用来导入其他的配置类|普通类。
    如果我们希望spring也能管理某一个类的对象,除了打上@Component注解之外,还可以使用@Import注解在配置类引入

    第一步:

    第二步:

    如果我们希望一个类希望让spring能管理,就在核心配置类的地方使用@Import把他导入进来

    希望在spring的容器中有person对象,只要在这个类上打上@Component

    把这个类标记成我们项目的一个组件,spring发现了他,就会把他的对象创建出来,放在spring的容器当中

    ******一个类让spring管理的几种做法

    第一种:在类上打上@Component

    第二种;在核心配置类中用@Import导入

    第三种:@Bean

    5  .@Bean

     

    第一步

    第二步

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    【C++】加了<string.h>还是报“strlen:找不到标识符”的错误
    linux--发展史与环境
    思科设备密码破解方法
    怎么按要求对PDF文件进行拆分?PDF拆分教程来了
    一文讲透为Power Automate for Desktop (PAD) 实现自定义模块 - 附完整代码
    [附源码]Python计算机毕业设计SSM考勤系统设计(程序+LW)
    Android Bitmap 缩放
    Mysql索引原理
    技巧分享:wps文件怎么转换成word格式?
    Flutter:安装依赖报错doesn‘t support null safety
  • 原文地址:https://blog.csdn.net/m0_59281987/article/details/127569474