猿问

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

问题:我写了一个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 的注入。


三国纷争
浏览 1141回答 2
2回答

噜噜哒

在使用的时候,根据场景,需要使用 SqlSessionTemplate 默认构造器进行实例化,有时候需要SqlSessionTemplate 带参数的构筑器进行实例化。你的需求应该是在实例化 SqlSessionTemplate Bean 之前, 可以根据不同的需求来使用相应的构造器吧?那么可以使用Spring Java Config 的方式来配置 Bean, 例如:@Configurationpublic class AppConfig {    @Bean    public SqlSessionTemplate sqlSessionTemplate() {        if (someCondition) {            return new SqlSessionTemplate();        } else {            return new SqlSessionTemplate(args);        }    }}使用 Spring Java Config , 就可以根据条件控制如何生成 Bean 的.

阿波罗的战车

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

相关分类

Java
我要回答