论坛项目学习记录【预备篇1】

这篇具有很好参考价值的文章主要介绍了论坛项目学习记录【预备篇1】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. java程序类规范

java bean实际上时java程序中对类约定的定义规则

是一套规范,有了这套规范,方便使用和交流

  1. 所有类必须定义在包里
  2. 除非特殊原因一定要有无参构造
  3. 要实现序列化接口
  4. 所有属性需要使用getXxx和SetXxx的规则

2. Spring的组件扫描

2.1 使用组件扫描注入对象

我们之前的案例中使用的是@Bean来进行的注入

这种注入是需要编写代码的

如果需要实例化后为属性赋值或者类似操作,我们可以使用@Bean来注入到Spring容器

但是有些类没有需要赋值的属性,那么使用@Bean注入就比较麻烦了

可以使用@Component(英文:“组件”)

来标记在需要注入的类上,这样Spring内部可以自动注入

注入对象的id名是类名首字母小写的状态

例如:DragonBlade —> dragonBlade

但是如果类名是连续两个或以上的大写字母,那么id就是类名

例如:AWPGun —> AWPGun

注意光在类上加注解是不够的

还需要在Config类上加扫描的注解

小结组件扫描注入过程

  1. 在要注入的类上加注解@Component

  2. 注意类名生成的ID

  3. 别忘了在Config类上编写@ComponentScan扫描目标包

3. Spring提供多种注解注入对象

@Component
@Controller
@Service
等多种注解都可以响应组件扫描将这个类注入到Spring容器
一个功能分这么多注解的原因并不是注解的功能不同
区别仅在于他们单词的意思不同
我们使用的时候根据当前类的角色使用不同单词来注入

4.自定义组件的id

使用@bean注入时可以使用下面的方法自定义注入Spring容器的id
@Bean("caocao")
使用@Component以及其他可以组件注入的注解时
使用下面方法自定义注入Spring容器的id
@Component("db")

5.Spring容器对Bean的管理策略

5.1 管理Bean的作用域

什么是作用域

我们将Spring中Bean的作用域分为两种

1.单例(singleton):
当前这个注入的对象在Spring容器中只有1个
无论何时获取,均获得这同一个对象
Spring默认情况下管理Bean就是单例的

2.原型(prototype):
原型模式下,我们使用的注入只是一个模板
每次获得对象时,新实例化对象返回给我们的调用
所以每次获得得对象不是同一对象,互相没有关联

单例的好处:
节省内存,但是不能记录不同的属性或状态

原型的好处:
可以获得不同的对象,保存不同的属性或状态,但是频繁获取会制造过多对象,浪费内存

设置方式:

  1. 单例是默认的,无需设置

  2. 原型模式@Bean注入

    @Bean("caocao")
    @Scope("prototype")//原型
    public Stu student(){
        Stu stu = new Stu();
        stu.setName("曹操");
        stu.setAge(60);
        return stu;
    }

组件扫描

@Component("db")
@Scope("prototype")//原型
public class DragonBlade {
    ....
}

5.2 懒惰初始化

单例下我们在实例化Spring容器时就会自动创建单例的对象
如果程序中不使用这个对象,反而会造成内存的浪费
我们怎么弥补这个缺点呢?(这个情况只针对单例的对象)
使用懒惰初始化
懒惰初始化就是在程序使用到这个对象时在实例化这个对象的策略
一般用于不确定是否使用的对象使用注解
@Lazy
@Bean注入方式

    @Bean("caocao")
    //@Scope("prototype")
    @Lazy//懒惰加载
    public Stu student(){
        Stu stu=new Stu();
        stu.setName("曹操");
        stu.setAge(60);
        return stu;
    }

组件扫描注入方式

@Component("db")
@Lazy//懒惰初始化
public class DragonBlade {
...
}

6. 使用@Import导入其它配置文件

在实际开发中
一个项目可以有多个配置类
程序运行时他们都需要加载
最简单的办法就是在ACAC构造方法里使用,分割编写多个配置类的反射
例如

ctx=new AnnotationConfigApplicationContext(
                Config.class, Config2.class);

但是上面的代码在新增更多配置类时还是需要维护的
name我们可以在某个配置类中通过添加@Import注解的方式,不修改具体代码来添加配置类文章来源地址https://www.toymoban.com/news/detail-467686.html

@ComponentScan("cn.tedu.hero")
@Import({Config2.class})//同时加载Config2这个类中的Spring配置
public class Config {
....
}

到了这里,关于论坛项目学习记录【预备篇1】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 动手学深度学习-预备知识-数据操作

    动手学深度学习,笔记 1.首先导入torch库,我们使用pytorch主要使用这个库的函数 张量表示一个由数值组成的数组,这个数组可能有多个维度。具有一个轴的张量对应数学上的向量(vector); 具有两个轴的张量对应数学上的矩阵(matrix);具有两个轴以上的张量没有特殊的数

    2024年02月05日
    浏览(44)
  • 电力系统知识预备及学习方向

    由于电源点与负荷中心多数处于不同地区,也无法大量储存,故其生产、输送、分配和消费都在同一时间内完成,并在同一地域内有机地组成一个整体,电能生产必须时刻保持与消费平衡。因此,电能的集中开发与分散使用,以及电能的连续供应与负荷的随机变化,就制约了

    2024年02月09日
    浏览(42)
  • 【深度学习】S1 预备知识 P1 张量

    张量(Tensor)是深度学习中用于表示和处理多维数据的数据结构。张量与 Numpy 类似,但是不同的是深度学习框架专门为张量提供了丰富的操作API,包括创建张量、数据转换、数学运算、索引和切片等,使张量可以使用 GPU 加速,大大提高处理大量数据时的计算速度;同时提供

    2024年02月21日
    浏览(32)
  • 【Linux学习】信号——预备知识 | 信号产生 | 核心转储

    🐱作者:一只大喵咪1201 🐱专栏:《Linux学习》 🔥格言: 你只管努力,剩下的交给时间! 从生活中入手,例如发令枪,闹钟,红绿灯等等,这些都是信号。信号必须都是 动态 的,像路标就不能称之为信号。 以红绿灯为例,一看到红绿灯我们就知道红灯行,绿灯停,我们不

    2023年04月11日
    浏览(33)
  • 深度学习预备知识-数据存储、数据预处理

    为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。 通常,我们需要做两件重要的事: (1)获取数据; (2)将数据读入计算机后对其进行处理。 如果没有某种方法来存储数据,那么获取数据是没有意义的。 首先,我们介绍n维数组,也称为 张量 (tensor)

    2024年01月17日
    浏览(44)
  • AI-应试-机器学习公式推导与代码实现-预备

    (AI算法系列) 机器学习 背景 训练过程 应用场景 局限及挑战 未来 2.1机器学习 模型:要学习的决策函数或条件概率分布 策略:决定按什么标准选最优模型-》loss 分类:对数、交叉熵 回归:均方 算法:具体的优化求解算法:梯度下降、牛顿法、拟牛顿法 2.2 核心:从数据中最

    2024年02月03日
    浏览(52)
  • 【Node.js学习 day2——预备知识】

    1、概念 Buffer是一个类似于数组的对象,用于表示固定长度的字节序列 Buffer本质是一段内存空间,专门用来处理二进制数据 2、特点 Buffer大小规定且无法调整 Buffer性能较好,可以直接对计算机内存进行操作 每个元素的大小为1字节(byte) 3、使用 创建Buffer(3种方式) 4、 B

    2024年01月25日
    浏览(47)
  • 程序员技能与成长:如何学习新的编程语言和代码规范与单元测试

    一名软件工程师的最大挑战就是使自己的技术栈跟得上技术的发展,而在这个技术飞速发展的时代,保证自己不被淘汰的唯一方法就是不断学习。 那么,程序员需要掌握多门编程语言吗?很多初学者都被这个问题所困扰。Google研究总监 Peter Norvig曾就这个问题给出自己的观点

    2024年04月10日
    浏览(47)
  • 李沐 《动手学深度学习》预备知识 线性代数与微积分

    李沐《动手学深度学习》预备知识 张量操作与数据处理 教材:李沐《动手学深度学习》 标量(scalar) 仅包含一个数值被称为标量,标量由只有一个元素的张量表示。 向量 向量可以被视为标量值组成的列表,向量由一维张量表示。一般来说,张量可以具有任意长度,取决于

    2024年01月20日
    浏览(66)
  • Git常见问题与使用实际问题记录。

    git stash 是 Git 版本控制系统提供的一个命令,用于临时保存当前工作目录的修改。当您在进行代码开发时,可能会遇到需要暂时切换到其他分支或处理其他任务的情况,但又不想提交当前的修改。这时,您可以使用 git stash 命令来保存这些修改,以便稍后恢复并继续工作。

    2024年02月04日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包