雷神Spring实验15~22笔记

由于没有找到对应的源码,所以只能简单把笔记写上

实验15:通过注解分别创建Dao、Service、Controller(控制器:控制网站跳转逻辑)★
实验16:使用context:include-filter指定扫描包时要包含的类
实验17:使用context:exclude-filter指定扫描包时不包含的类
实验18:使用@Autowired注解实现根据类型实现自动装配★
实验19:如果资源类型的bean不止一个,
        默认根据@Autowired注解标记的成员变量名作为id查找bean,进行装配★
实验20:如果根据成员变量名作为id还是找不到bean,
        可以使用@Qualifier注解明确指定目标bean的id★
实验21:在方法的形参位置使用@Qualifier注解
实验22:@Autowired注解的required属性指定某个属性允许不被设置

实验15:通过注解分别创建Dao、Service、Controller(控制器:控制网站跳转逻辑)★

通过给bean上添加某些注解,可以快速的将bean加入ioc容器中---xml文件
     某个类上添加任何一个注解都能快速将这个组件加入到ioc容器中
     Spring有4个注解
     ①普通组件:@Component
     给不属于以下几层的组件添加这个注解
    ②持久化层组件:@Respository
    给数据库层(持久化层 Dao层)的组件添加这个注解  BookDao.java
    ③业务逻辑层组件:@Service
    推荐业务逻辑层组件添加这个注解  BookService.java
    ④表述层控制器组件:@Controller
    控制器层的组件(servlet包下)添加这个注解   BookServlet.java

    ⚠️注意:注解可以随便加,事实上Spring并没有能力识别一个组件到底是不是它所标记的类型,
    即使将@Respository注解用在一个表述层控制器组件上面也不会产生任何错误,
    所以@Respository、@Service、@Controller这几个注解仅仅是为了让程序员看的。

    使用注解将组件(类)快速加入到容器的步骤:
    1)给要添加的组件上标四个注解中任何一个
    2)告诉Spring,自动扫描添加了注解的组件:依赖context名称空间(在Namespace里面导入context)
       context名称 <context:component-scan base-package=""></context:component-scan>
       context:component-scan 自动扫描组件
       base-package 指定扫描的基础包:把基础包及他下面所有的包所有加了注解的类,自动扫描进ioc容器
    3)一定要导入aop包,它支持注解模式

     在IOCTest.java中测试
     getBean(id)
     加了注解的组件的简单类名首字母小写后得到的字符串作为bean的id
     比如 ioc. getBean("bookDao")

     使用注解加入容器中的组件🆚使用配置加入容器中组件
     行为都是默认一样的
     1、组件id,默认就是组件的类名首字母小写
     2、组件的作用域,默认就是单例
     要改名字--直接在注解改 @Respository("bookdaohhhh")
     要改多例--@Scope(value="prototype")

     ⚠️只有自己写的代码才能加注解

实验16:使用context:include-filter指定扫描包时要包含的类

实验17:使用context:exclude-filter指定扫描包时不包含的类

实验16:使用context:include-filter指定扫描包时要包含的类
       只扫描进入哪些组件,默认是全部扫描进来 
       一定要禁用默认过滤规则--use-default-filter = "false"就可以解决
       <context:component-scan base-package="com.atguigu" use-default-filter="false">
                 <context:include-filter type="annotation" expression=""/>
        </context:component-scan>
实验17:使用context:exclude-filter指定扫描包时不包含的类
       扫描的时候可以排除一些不要的组件
       type="annotation"指定排除规则:按照注解进行排除。标注了指定注解的组件都不要
       expression="" 注解的全类名
       <context:component-scan base-package="com.atguigu">
          <context:exclude-filter type="annotation" expression=""/>
    </context:component-scan>

    type="assignable"
    expression="" 类的全类名
    type="custom" 自定义一个TypeFilter,自己写代码决定哪些使用
    type="regex" 表示可以写正则表达式

🌟由于除了实验21,这几个实验都是相关联的,所以放在一起

实验18:使用@Autowired注解实现根据类型实现自动装配★

实验19:如果资源类型的bean不止一个, 默认根据@Autowired注解标记的成员变量名作为id查找bean,进行装配★

实验20:如果根据成员变量名作为id还是找不到bean, 可以使用@Qualifier注解明确指定目标bean的id★

实验22:@Autowired注解的required属性指定某个属性允许不被设置

实验18:使用@Autowired注解实现根据类型实现自动装配★ DI依赖注入
   BookServlet里面有BookService
   BookService里面有BookDao
   @Autowired自动装配,Spring自动为这个属性赋值--是去容器中找到这个属性对应的组件
   --不用new一个,也不用在每个类写getter setter方法


  @Autowired原理分析

  @Autowired
  private BookService bookService;

  1)先按照类型去容器中找到对应的组件: bookService = ioc.getBean(BookService.class);
    (1) 找到一个:找到就赋值
    (2) 没找到,报异常
    (3)找到多个,运行没报错,装配上了
       为什么?
       <1>🌟按照变量名作为id继续匹配:BookService 和 BookServiceExt  🌟实验19🌟
           ---变量名分别为bookService 和 bookServiceExt  所以BookService(bookService) ☑️
           《1》匹配上,装配
           《2》没有匹配--报错--原因是因为我们按照变量名作为id继续匹配---🌟实验20🌟
            @Autowired
            private BookService bookServiceExt2;
               🌟解决方法:使用@Qualifier("bookService")指定一个新id
                  @Qualifier("bookService")
                  @Autowired
                  private BookService bookServiceExt2;
                     【1】找到,装配
                     【2】找不到,报错
                      但是@Autowired标注的自动装配的属性默认是一定装配上的
                        找到就装配,找不到就null---🌟实验22🌟
                        🌟解决方法:@Autowired(required=false)
                         @Qualifier("bookServiceHaha")
                         @Autowired(required=false)
                         private BookService bookServiceExt2;

实验21:在方法的形参位置使用@Qualifier注解

实验21:在方法的形参位置使用@Qualifier注解

定义的方法上有@Autowired的话:
 (1)这个方法也会在bean创建时候自动运行
 (2)这个方法的每一个参数都会自动注入值
 
 @Autowired
 private void hahahha(BookDao bookDao,@Qualifier("bookServiceExt")BookService bookService){
   System.out.println("hhhh")
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
雷神笔记本升级BIOS是指更新笔记本电脑的基本输入输出系统(BIOS)软件版本。BIOS是计算机启动时运行的固件,它负责初始化硬件设备、加载操作系统等重要任务。升级BIOS可以提供更好的系统稳定性、兼容性和功能支持。 要升级雷神笔记本的BIOS,可以按照以下步骤进行操作: 1. 确认当前BIOS版本:在Windows系统中,按下Win + R键,输入"msinfo32"并回车,打开系统信息窗口。在窗口左侧导航栏中选择"系统摘要",在右侧窗口中找到"BIOS版本/日期"一项,记录下当前的BIOS版本号。 2. 下载最新的BIOS版本:访问雷神官方网站或相关技术支持页面,找到对应型号的笔记本电脑的驱动下载页面。在该页面中找到最新的BIOS版本,并下载到本地。 3. 准备U盘:将一个空白的U盘格式化为FAT32文件系统,并确保U盘容量足够存放BIOS文件。 4. 更新BIOS:将下载好的BIOS文件复制到准备好的U盘中。确保笔记本电脑已经关机,并插入准备好的U盘。按下电源键开机,同时按下F2或DEL键(具体键位可能因不同型号而有所不同)进入BIOS设置界面。在BIOS设置界面中找到"BIOS Update"或类似选项,选择从U盘启动并选择对应的BIOS文件进行更新。 5. 完成升级:等待BIOS更新过程完成,期间不要关闭电源或进行其他操作。更新完成后,笔记本电脑会自动重启。 需要注意的是,在升级BIOS之前,请确保你已经备份了重要的数据,并且仔细阅读官方提供的升级指南和注意事项,以避免操作失误导致系统损坏。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值