在我的应用程序中,我们使用多个数据源,因此我们有多个数据库配置(会话工厂)。在我们的本地(whindows机器)上一切正常,但当我们将war文件部署到Unix时,应用程序失败,出现以下异常:
组织。springframework。豆。工厂BeanCreationException:创建名为“cpnRepository”的bean时出错:自动连线依赖项的注入失败;嵌套的异常是org。springframework。豆。工厂BeanCreationException:无法自动关联字段:私有组织。冬眠SessionFactory组织。全国人大常委会。ccms。刀。GenericDB1Dao。会期工厂;嵌套的异常是org。springframework。豆。工厂BeanCreationException:创建名为“DB1Config”的bean时出错:自动连线依赖项的注入失败;嵌套的异常是org。springframework。豆。工厂BeanCreationException:无法自动关联字段:私有组织。冬眠SessionFactory组织。全国人大常委会。ccms。配置。db。数据库配置。会期工厂;嵌套的异常是org。springframework。豆。工厂BeanCurrentlyIncrementException:创建名为“DB1SessionFactory”的bean时出错:请求的bean当前正在创建中:是否存在无法解析的循环引用?
以下是dao的实现:
@Repository("cpnRepository")
public class ProgramNodeDaoImpl extends GenericDB1Dao<Integer, CustomProgramNode> implements CPNRepositoryDao {
@Override
public List<CustomProgramNode> findAllNodes() {
Criteria criteria = createEntityCriteria();
return (List<CustomProgramNode>) criteria.list();
}
@Override
public List<CustomProgramNode> findByStatus(String status) {
Query query = getSession().createQuery("from CustomProgramNode where status = :status");
query.setParameter("status", status);
List<CustomProgramNode> list = query.list();
return list;
}
}
DB1的通用DAO:
public abstract class GenericDB1Dao<PK extends Serializable, T> {
private final Class<T> persistentClass;
@SuppressWarnings("unchecked")
public GenericAgrgtrDao(){
this.persistentClass =(Class<T>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[1];
}
@Autowired
@Qualifier("DB1SessionFactory")
private SessionFactory sessionFactory;
protected Session getSession(){
return sessionFactory.getCurrentSession();
}
@SuppressWarnings("unchecked")
public T getByKey(PK key) {
return (T) getSession().get(persistentClass, key);
}
public void persist(T entity) {
getSession().persist(entity);
}
public void delete(T entity) {
getSession().delete(entity);
}
protected Criteria createEntityCriteria(){
return getSession().createCriteria(persistentClass);
}
}
数据库配置:
@Configuration
public class DB1Config {
final static Logger logger = LogManager.getLogger(DB1Config.class);
@Autowired
private Environment environment;
@Autowired
@Qualifier("DB1SessionFactory")
private SessionFactory sessionFactory;
@Bean(name="DB1SessionFactory")
public LocalSessionFactoryBean db1SessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String[] { "org.npcc.ccms.model.db1" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean(destroyMethod="")
public DataSource dataSource() {
JndiTemplate jndi = new JndiTemplate();
DataSource dataSource = null;
try {
dataSource = (DataSource) jndi.lookup(environment.getRequiredProperty("datasource.db1"));
} catch (NamingException e) {
}
return dataSource;
}
private Properties hibernateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
return properties;
}
@Primary
@Bean(name="DB1TransactionManager")
public HibernateTransactionManager db1TransactionManager() {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(this.sessionFactory);
txManager.setDataSource(dataSource());
return txManager;
}
}
Spring如何解决bean依赖关系?为什么两个操作系统之间的顺序不一致?提前感谢。
我认为您的问题来自这样一个事实:您正在创建一个LocalSessionFactoryBean
,同时尝试自动连接SessionFactory
。。。
在DB1Config
类中,您不需要该类成员sessionFactory
,请尝试以下操作:
@Bean(name="DB1SessionFactory")
public LocalSessionFactoryBean db1SessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan(new String[] { "org.npcc.ccms.model.db1" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public SessionFactory sessionFactory() {
return db1SessionFactory().getObject();
}
本文向大家介绍spring循环注入异常问题的解决方案,包括了spring循环注入异常问题的解决方案的使用技巧和注意事项,需要的朋友参考一下 今天在做项目的时候突然遇到一个问题:启动服务器的时候spring没报错,可是当我访问某个页面的时候spring报Request bean is currently in creation: is there an unresolvable circular r
我已经在Android Studio中编写了它,也在同一个项目中与Kotlin一起工作。这是我的java代码的错误列表(按照Android Studio扔给我的顺序): 无法解析符号“重写” 无法解析方法“在创建时(?)” 无法解析符号“Saved InstanceState” 无法解析方法“在创建时(?)” 无法解析符号“Saved InstanceState” 无法解析方法“Set Conte
问题内容: 我有一个目录结构 而且我可以使用访问网络模块。 但是,pycharm抱怨它无法访问该模块。我该如何教pycham解析参考文献? 问题答案: 手动将其添加为你所做的确实这样做的一种方式,但有一个简单的方法,那就是通过简单地告诉要在添加文件夹作为源根目录,然后添加源根你的Python路径。 这样,你就不必将代码硬编码到解释器的设置中: 添加为源内容根: 然后确保将添加源添加到你的: 这样,
问题内容: 下面是我的控制器,它从sql db中读取数据,然后尝试将结果编码为JSON并将数据发送回我的gridview.js 这就是问题所在,使用上面的代码,我在执行gridview.js时得到了没有数据的gridview表,但是如果我直接访问控制器的方法是这样的 我得到这个错误, 序列化类型为’System.Globalization.CultureInfo’的对象时,检测到循环引用。 说明:
我试图遵循这里给出的例子:https://developer.android.com/topic/security/data 我已经在我的gradle中包含了必需的库: 然而,当我尝试使用代码时: 我得到一个未解决的引用:MasterKey错误。图书馆有那门课吗? 提前谢谢。
本文向大家介绍详解vue beforeEach 死循环问题解决方法,包括了详解vue beforeEach 死循环问题解决方法的使用技巧和注意事项,需要的朋友参考一下 什么是beforeEach? beforeEach 是一个vue-router的路由导航钩子,一般我用它做路由守卫。 什么是路由守卫? 路由跳转前做一些验证,比如登录验证,是网站中的普遍需求。对此,vue-route 提供的befo