【Spring基础】@Configuration和@Import

起因

偶然间,用到了@Configuration创建Bean,对于@Configuration又学到了一些知识点。

单例模式

网上查资料,理解有误差,以为单例模式一个类只有一个实例,只能创建一个Bean;但是如果同一个类需要创建多个对象的时候,该怎么办?
后来经过大佬的点拨,再加上查找资料,发现:

在Spring中,bean可以被定义为两种模式:prototype(多例)和singleton(单例)。
singleton(单例):只有一个共享的实例存在,所有对这个bean的请求都会返回这个唯一的实例。
prototype(多例):对这个bean的每次请求都会创建一个新的bean实例,类似于new。
Spring bean 默认是单例模式。

Spring下默认的bean均为singleton,可以通过singleton=“true|false” 或者 scope="?"来指定。
废话少说,上代码,同一个类怎么创建多个Bean。

@Configuration
public class MyConfig
{
 
    @Bean
    public UserDao createUserDao ()
    {
        return new UserDao();
    }
 
    @Bean
    public UserDao createUserDao2 ()
    {
        return new UserDao();
    }
 
 
 

@Service
public class UserService
{
 
    @Autowired
    @Qualifier(value = "createUserDao2")  //使用Qualifier指定bean对象
    private  UserDao userDao;
 
  
    @Autowired
    @Qualifier(value = "createUserDao")  //使用Qualifier指定bean对象
    private  UserDao userDao;
}

既然讲到了单例模式,我们来看一下。

单例模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

import注解用法

不知道大家有没有碰到过这种情况,我在一个工具包里面使用@Configuration写好了一个config类,但是我在项目里面如何使用这个类呢?这个时候我知道了@Import,通过快速导入的方式实现把实例加入spring的IOC容器中,加入IOC容器的方式有很多种,@Import注解就相对很牛皮了,可以用于导入第三方包 ,当然@Bean注解也可以,但是@Import注解快速导入的方式更加便捷。
使用方法:

@Import({ 类名.class , 类名.class... })
@Configuration
public class TestDemo {

}

这样一来,对应的类的bean都将加入到spring容器中,这些在容器中bean名称是该类的全类名 ,比如com.zd.类名。

参考:
https://www.cnblogs.com/yichunguo/p/12122598.html

你可能感兴趣的:(Spring,java,spring)