为了账号安全,请及时绑定邮箱和手机立即绑定

多构造器的类,如何通过Spring 注解进行依赖注入,通过Spring管理Bean

多构造器的类,如何通过Spring 注解进行依赖注入,通过Spring管理Bean

三国纷争 2019-03-19 17:14:01
问题:我写了一个BaseMyBatisDAOImpl ,该类中需要依赖SqlSessionTemplate 。SqlSessionTemplate 的构造器有3中(含参数和不含参数的构造器)。我想完全通过注解方式实现依赖注入,又能通过Spring来管理BaseMyBatisDAOImpl。在使用的时候,根据场景,需要使用SqlSessionTemplate 默认构造器进行实例化,有时候需要SqlSessionTemplate 带参数的构筑器进行实例化。请问有什么好的实现方式吗?代码如下:@Repository(value = "BaseMyBatisDAOImpl")public class BaseMyBatisDAOImpl extends SqlSessionDaoSupport{          public static final Logger log = LoggerFactory.getLogger(BaseMyBatisDAOImpl.class);                   protected SqlSession sqlSession;                                          @Autowired       public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate){              super.setSqlSessionTemplate(sqlSessionTemplate);       }                  }            还是我们一定只能增加SetXXX方法,根据场景判断通过Set方式实现SqlSessionTemplate 的注入。
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

在使用的时候,根据场景,需要使用 SqlSessionTemplate 默认构造器进行实例化,有时候需要SqlSessionTemplate 带参数的构筑器进行实例化。


你的需求应该是在实例化 SqlSessionTemplate Bean 之前, 可以根据不同的需求来使用相应的构造器吧?

那么可以使用Spring Java Config 的方式来配置 Bean, 例如:


@Configuration

public class AppConfig {

    @Bean

    public SqlSessionTemplate sqlSessionTemplate() {

        if (someCondition) {

            return new SqlSessionTemplate();

        } else {

            return new SqlSessionTemplate(args);

        }

    }

}

使用 Spring Java Config , 就可以根据条件控制如何生成 Bean 的.


查看完整回答
反对 回复 2019-04-25
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

我觉得可以写多个继承SqlSessionTemplate的类,然后用@Component("Your_Bean_Name")来指定不同实现的Bean名称,最后在注入的地方用@Qulifiler("The_Bean_Name")来指定要注入的Bean!


查看完整回答
反对 回复 2019-04-25
  • 2 回答
  • 0 关注
  • 1140 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号