这是我的设想。我的项目正在使用Spring(3.2.3.Release)、Struts2(2.3.14.3)和JPA(2.0)。我们有一个包含各种实体和公共类的项目(我们称之为项目a)。我们使用项目A生成一个.jar文件,以便其他项目可以使用这些类。在项目A中,我们使用了Spring原型:@Component。@service或@repository用于我们希望Spring注入的那些类。每当我们尝试从jar中注入bean时,我们都会得到类似于以下内容的错误:
>
找不到依赖项的[com.ceiwc.bc.commonsql.service.CommonsqlService]类型的合格bean:至少需要一个合格的bean作为此依赖项的自动候选项。依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
无法自动连接字段:private com.ceiwc.bc.commonsql.service.commonsqlservice com.ceiwc.ma.mvc.action.loginaction.commonsqlservice;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项得[com.ceiwc.bc.CommonSql.Service.CommonSqlService]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
创建名为“com.ceiwc.ma.mvc.action.LoginAction”的bean时出错:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.beanCreationException:无法自动连接字段:private com.ceiwc.bc.commonsql.service.commonsqlservice com.ceiwc.ma.mvc.action.loginaction.commonsqlservice;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项得[com.ceiwc.bc.CommonSql.Service.CommonSqlService]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
无法实例化为命名空间“/login”中的“do login”定义的操作com.ceiwc.ma.mvc.Action.loginAction错误创建名为“com.ceiwc.ma.mvc.Action.loginAction”的bean:注入autowired依赖项失败;嵌套异常为org.springframework.beans.factory.beanCreationException:无法自动连接字段:private com.ceiwc.bc.commonsql.service.commonsqlservice com.ceiwc.ma.mvc.action.loginaction.commonsqlservice;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项得[com.ceiwc.bc.CommonSql.Service.CommonSqlService]类型得合格bean:需要至少一个符合此依赖项自动候选条件得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(required=true)}
我们正在为Spring使用Java配置。下面是我们的配置类:
package com.zzz.bc.config;
@Configuration
@ImportResource({"/WEB-INF/spring/spring-config.xml"})
@ComponentScan(basePackages = "com.zzz")
public class ApplicationConfig {
@Bean
public JavaMailSender mailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(${app.mail.host});
return mailSender;
}
}
package com.zzz.bc.config;
@Configuration
@EnableTransactionManagement
@Import(ApplicationConfig.class)
@PropertySource({"classpath:db.properties"})
public class DataConfig {
@Autowired
Environment environment;
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager transactionManager = new JpaTransactionManager();
transactionManager.setEntityManagerFactory(entityManagerFactoryBean().getObject());
return transactionManager;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
String[] packagesToScan =
{environment.getProperty("db.packagesToScan1"), environment.getProperty("db.packagesToScan2")};
Map<String, Object> jpaProperties = new HashMap<String, Object>();
jpaProperties.put("eclipselink.weaving", "false");
LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
entityManagerFactoryBean.setDataSource(dataSource());
entityManagerFactoryBean.setPackagesToScan(packagesToScan);
entityManagerFactoryBean.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver());
entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter());
entityManagerFactoryBean.setJpaPropertyMap(jpaProperties);
return entityManagerFactoryBean;
}
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getProperty("db.driver"));
dataSource.setUrl(environment.getProperty("db.url"));
dataSource.setUsername(environment.getProperty("db.username"));
dataSource.setPassword(environment.getProperty("db.password"));
return dataSource;
}
@Bean
public JpaVendorAdapter vendorAdapter() {
EclipseLinkJpaVendorAdapter vendorAdapter = new EclipseLinkJpaVendorAdapter();
vendorAdapter.setDatabase(Database.ORACLE);
vendorAdapter.setShowSql(true);
return vendorAdapter;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
}
我们将@ComponentScan设置为检查com.zzz包中的bean。在项目B中,我们有一个Struts2动作,希望从项目a中注入一个bean。这里是项目B中的类的一个片段:
@SuppressWarnings("rawtypes")
@Service("CommonSQLService")
public class CommonSQLServiceImpl implements CommonSQLService {
@Autowired
CommonSQLDao cdao;
@Override
public Policy getPolicyById(String policyNo) {
return cdao.getPolicyById(policyNo);
}
@Override
public Policy getPolicy(Policy parmRec) {
return cdao.getPolicy(parmRec);
}
@Override
public ArrayList<Policy> getPolicies(String policyNo) {
return cdao.getPolicies(policyNo);
}
@Override
public List<Policy> getPolicies(Policy parmRec){
return cdao.getPolicies(parmRec);
}
}
package com.zzz.ma.mvc.action;
@SuppressWarnings("serial")
@Component
@Scope("prototype")
@Namespace("/Login")
public class LoginAction extends ActionParent {
@Autowired
private IUserService userService; //Contained in project B
@Autowired
private CommonSQLService commonSQLService; //What's autowired from project A
private User user;
private String updateFlag;
private Integer parentMenuId;
private IwifWebNavmenuItem record;
public static final String LOGIN_STR = "login";
@Action(value = "doLogin", results = { @Result(name = "success", location = "/pages/login.jsp") })
public String login() {
updateFlag = "Y";
return SUCCESS;
}
@Action(value = "validate", results = {
@Result(name = "success", location = "/BrowseOptions/showOptions", type = "redirect"),
@Result(name = "login", location = "/pages/login.jsp") })
public String validateUser() {
if (updateFlag == null) {
session.remove(LOGIN_STR);
return LOGIN;
}
if (userService.validateUser(user.getUsername(), user.getPassword()) == null) {
addActionError(getText("invalid.user"));
return LOGIN;
}
session.put(LOGIN_STR, user.getUsername());
return SUCCESS;
}
@Action(value = "logout", results = { @Result(name = "success", location = "/pages/login.jsp") })
public String logout() {
updateFlag = StringUtils.EMPTY;
session.invalidate();
return SUCCESS;
}
}
每当我们尝试执行此自动连接时,我们都会遇到上面所列的错误。我们错过了什么?不能自动连线包含在带有Spring构造型的jar文件中的类吗?
谢谢你提前帮我!
将@service(“CommonSQLService”)
更改为@service(“CommonSQLService”)
,或者如果您没有在其他任何地方实现CommonSQLService
接口,则可以只使用@service
。
我通过使用Spring和Hibernate创建实体、服务和服务的JUnit测试开始了我的项目。所有这些都很管用。然后,我添加了spring-mvc来使用许多不同的分步教程来制作这个web应用程序,但是当我试图使用注释制作Controller时,我在部署期间从Glassfish得到错误。我想由于某种原因Spring没有看到我的服务,但经过多次尝试,我仍然无法处理它。 /webapp/web-inf/
问题内容: 我正在开发一个小型Java EE Hibernate Spring应用程序,出现错误: 这是我的控制器ArticleControleur,其中包含用于恢复文章列表的功能: 这是我的articleService: 这是我的应用程序上下文: 问题答案: 该错误表明不是注册的Bean。添加其中包含将在你的应用程序上下文中自动装配的bean的软件包: 或者,如果你想将所有子包包括在com.bd
我正在运行一个JUnit测试,嗯,我的Spring启动项目,我是这样写的: 找到依赖项[com.br.suppcomm.ocp.dao.logindao]得[com.br.suppcomm.ocp.dao.logindao]:需要至少1个具有此依赖项自动候选资格得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(
大家好,我收到下一个错误,我是使用Hibernate的新手
我有测试Spring Data JPA的示例测试程序,但看起来存储库没有生成。 我的配置: 用户实体: