• spring boot的对象注入


    1 需求

    现在我们的项目中需要引入一个java类库,我想要很方便的使用该类库中的一个类,并且我想要创建这个类的一个单例对象。然后可以很方便的在各个模块中用@AutoWired进行对象注入。

    比如一个配置文件,我在一个地方创建Configuration对象,读取配置文件中的配置,然后在各个模块中使用该对象。

    2 需求分析

    这个需求涉及到两个问题,

    一个是单例对象的创建;另外一个是单例对象的引用。因为,你要用一个对象,你首先得创建它。创建一个对象在Spring中有固定的模式,在定义类的时候使用@Component注解,@Component默认是单例的。这样spring framework在进行component scan的时候就会创建这个对象。用的时候很简单,只需要@Autowired就可以了。

    @Autowired最好使用构造器注入,也就是说,不是直接将@Autowired放在成员变量上面,而是放在构建函数上面,然后通过构造函数的参数注入。为何要这么麻烦?

    3 Spring boot是对spring使用的简化,所以这整个的过程也是Spring boot所具备的能力。

    4 以上分析的是自己创建的类对象注入,现在如果用这种对象注入来使用成熟的包中的对象呢?

    4.1 使用配置文件生成bean

    <bean class="xxx"></bean>

    4.2 使用@Configuration注解生成bean

    @Configuration

    public class AppConfig {

        @Bean(name = "timedCache")

        public TimedCache<String, Muser> listStrBean() {

            return new TimedCache<String, Muser>(30 * 6000);

        } 

    }

    5 各个常用的注解

    5.1 dao

    @Repository

    5.2 model

    不需要注解

    5.3 restful的controller

    @RestController

    5.4 service

    service接口处不用,在接口的实现类处用@Service

    6 关于@Autowired

    要用到另外一个类的对象时,首先定义一个引用。

    然后在本类的构造函数中给该引用赋值,然后将@Autowired来注解这个构造函数。

  • 相关阅读:
    大搜车知乎live中的面试题结题方法记录
    git 学习笔记
    JavaScript 函数节流和函数去抖应用场景辨析
    要不要用gzip优化前端项目
    js和native交互方法浅析
    js设计模式之惰性单例模式
    阻止a标签的默认事件及延伸
    为什么会有OPTIONS请求
    浅析前端渲染与服务端渲染
    exports 和 module.exports 的区别
  • 原文地址:https://www.cnblogs.com/hustdc/p/9903247.html
Copyright © 2020-2023  润新知