2017-05-10 12 views
-4

Ausnahme bei org.springframework.beans.factory.BeanCreationException: Fehler
Erstellen Bean mit Name'myDBAuthenticationService ': Injektion von Autowired Abhängigkeiten fehlgeschlagen; verschachtelte Ausnahme ist Org.springframework.beans.factory.BeanCreationException: Konnte nicht autowire Feld: privat org.o7planning.springmvcshoppKann mir jemand sagen, warum ich diese Ausnahme bekomme?

AdminController.java

package org.o7planning.springmvcshoppingcart.controller; 
import java.util.List; 
import org.o7planning.springmvcshoppingcart.dao.OrderDAO; 
import org.o7planning.springmvcshoppingcart.dao.ProductDAO; 
import org.o7planning.springmvcshoppingcart.model.OrderDetailInfo; 
import org.o7planning.springmvcshoppingcart.model.OrderInfo; 
import org.o7planning.springmvcshoppingcart.model.PaginationResult; 
import org.o7planning.springmvcshoppingcart.model.ProductInfo; 
import org.o7planning.springmvcshoppingcart.validator.ProductInfoValidator; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.support.ResourceBundleMessageSource; 
import org.springframework.security.core.context.SecurityContextHolder; 
import org.springframework.security.core.userdetails.UserDetails; 
import org.springframework.stereotype.Controller; 
import org.springframework.transaction.annotation.Propagation; 
import org.springframework.transaction.annotation.Transactional; 
import org.springframework.ui.Model; 
import org.springframework.validation.BindingResult; 
import org.springframework.validation.annotation.Validated; 
import org.springframework.web.bind.WebDataBinder; 
import org.springframework.web.bind.annotation.InitBinder; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import 
org.springframework.web.multipart.support.ByteArrayMultipartFileEditor; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.mvc.support.RedirectAttributes; 

@Controller 
// Enable Hibernate Transaction. 
@Transactional 
// Need to use RedirectAttributes 
@EnableWebMvc 
public class AdminController { 

@Autowired 
private OrderDAO orderDAO; 

@Autowired 
private ProductDAO productDAO; 

@Autowired 
private ProductInfoValidator productInfoValidator; 

// Configurated In ApplicationContextConfig. 
@Autowired 
private ResourceBundleMessageSource messageSource; 

@InitBinder 
public void myInitBinder(WebDataBinder dataBinder) { 
    Object target = dataBinder.getTarget(); 
    if (target == null) { 
     return; 
    } 
    System.out.println("Target=" + target); 

    if (target.getClass() == ProductInfo.class) { 
     dataBinder.setValidator(productInfoValidator); 
     // For upload Image. 
     dataBinder.registerCustomEditor(byte[].class, new 
    ByteArrayMultipartFileEditor()); 
    } 
} 

// GET: Show Login Page 
@RequestMapping(value = { "/login" }, method = RequestMethod.GET) 
public String login(Model model) { 

    return "login"; 
} 

@RequestMapping(value = { "/accountInfo" }, method = RequestMethod.GET) 
public String accountInfo(Model model) { 

    UserDetails userDetails = (UserDetails) 
SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 
    System.out.println(userDetails.getPassword()); 
    System.out.println(userDetails.getUsername()); 
    System.out.println(userDetails.isEnabled()); 

    model.addAttribute("userDetails", userDetails); 
    return "accountInfo"; 
} 

@RequestMapping(value = { "/orderList" }, method = RequestMethod.GET) 
public String orderList(Model model, // 
     @RequestParam(value = "page", defaultValue = "1") String pageStr) { 
    int page = 1; 
    try { 
     page = Integer.parseInt(pageStr); 
    } catch (Exception e) { 
    } 
    final int MAX_RESULT = 5; 
    final int MAX_NAVIGATION_PAGE = 10; 

    PaginationResult<OrderInfo> paginationResult // 
    = orderDAO.listOrderInfo(page, MAX_RESULT, MAX_NAVIGATION_PAGE); 

    model.addAttribute("paginationResult", paginationResult); 
    return "orderList"; 
} 

// GET: Show product. 
@RequestMapping(value = { "/product" }, method = RequestMethod.GET) 
public String product(Model model, @RequestParam(value = "code", 
defaultValue = "") String code) { 
    ProductInfo productInfo = null; 

    if (code != null && code.length() > 0) { 
     productInfo = productDAO.findProductInfo(code); 
    } 
    if (productInfo == null) { 
     productInfo = new ProductInfo(); 
     productInfo.setNewProduct(true); 
    } 
    model.addAttribute("productForm", productInfo); 
    return "product"; 
} 

// POST: Save product 
@RequestMapping(value = { "/product" }, method = RequestMethod.POST) 
// Avoid UnexpectedRollbackException (See more explanations) 
@Transactional(propagation = Propagation.NEVER) 
public String productSave(Model model, // 
     @ModelAttribute("productForm") @Validated ProductInfo productInfo, 
// 
     BindingResult result, // 
     final RedirectAttributes redirectAttributes) { 

    if (result.hasErrors()) { 
     return "product"; 
    } 
    try { 
     productDAO.save(productInfo); 
    } catch (Exception e) { 
     // Need: Propagation.NEVER? 
     String message = e.getMessage(); 
     model.addAttribute("message", message); 
     // Show product form. 
     return "product"; 

    } 
    return "redirect:/productList"; 
} 

@RequestMapping(value = { "/order" }, method = RequestMethod.GET) 
public String orderView(Model model, @RequestParam("orderId") String 
orderId) { 
    OrderInfo orderInfo = null; 
    if (orderId != null) { 
     orderInfo = this.orderDAO.getOrderInfo(orderId); 
    } 
    if (orderInfo == null) { 
     return "redirect:/orderList"; 
    } 
    List<OrderDetailInfo> details = 
this.orderDAO.listOrderDetailInfos(orderId); 
    orderInfo.setDetails(details); 

    model.addAttribute("orderInfo", orderInfo); 

    return "order"; 
} 

} 

pom.xml

<properties> 
    <java-version>1.8</java-version> 
</properties> 

<repositories> 
    <!-- Repository for ORACLE JDBC Driver --> 
    <repository> 
     <id>codelds</id> 
     <url>https://code.lds.org/nexus/content/groups/main-repo</url> 
    </repository> 
</repositories> 

<dependencies> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- Servlet API --> 
    <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api - 
-> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Jstl for jsp page --> 
    <!-- http://mvnrepository.com/artifact/javax.servlet/jstl --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 


    <!-- JSP API --> 
    <!-- http://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api --> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.2</version> 
     <scope>provided</scope> 
    </dependency> 

    <!-- Apache Commons FileUpload --> 
    <!-- http://mvnrepository.com/artifact/commons-fileupload/commons- 
fileupload --> 
    <dependency> 
     <groupId>commons-fileupload</groupId> 
     <artifactId>commons-fileupload</artifactId> 
     <version>1.3.1</version> 
    </dependency>   

    <!-- Spring dependencies --> 
    <!-- http://mvnrepository.com/artifact/org.springframework/spring-core - 
    -> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>4.2.5.RELEASE</version> 
    </dependency> 

    <!-- http://mvnrepository.com/artifact/org.springframework/spring-web -- 
    > 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>4.2.5.RELEASE</version> 
    </dependency> 

    <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc 
    --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.5.RELEASE</version> 
    </dependency> 

    <!-- http://mvnrepository.com/artifact/org.springframework/spring-orm -- 
    > 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.2.5.RELEASE</version> 
    </dependency> 

    <!-- Spring Security Artifacts - START --> 
    <!-- 
    http://mvnrepository.com/artifact/org.springframework.security/spring- 
    security-web --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>4.0.4.RELEASE</version> 
    </dependency> 

    <!-- 
    http://mvnrepository.com/artifact/org.springframework.security/spring- 
    security-config --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>4.0.4.RELEASE</version> 
    </dependency> 

    <!-- 
    http://mvnrepository.com/artifact/org.springframework.security/spring- 
    security-taglibs --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>4.0.4.RELEASE</version> 
    </dependency> 

    <!-- Spring Security Artifacts - END --> 

    <!-- Hibernate --> 
    <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.11.Final</version> 
    </dependency> 

    <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate- 
    entitymanager --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.11.Final</version> 
    </dependency> 

    <dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>jta</artifactId> 
    <version>1.1</version> 
     </dependency> 
    <!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-c3p0</artifactId> 
     <version>4.3.11.Final</version> 
    </dependency> 


    <!-- MySQL JDBC driver --> 
    <!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.34</version> 
    </dependency> 

    <!-- Oracle JDBC driver --> 
    <dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>ojdbc6</artifactId> 
     <version>11.2.0.3</version> 
    </dependency> 

    <!-- SQLServer JDBC driver (JTDS) --> 
    <!-- http://mvnrepository.com/artifact/net.sourceforge.jtds/jtds --> 
    <dependency> 
     <groupId>net.sourceforge.jtds</groupId> 
     <artifactId>jtds</artifactId> 
     <version>1.3.1</version> 
    </dependency> 

    <!-- PostgreSQL driver --> 
    <!-- https://mvnrepository.com/artifact/postgresql/postgresql --> 
    <dependency> 
     <groupId>postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.1-901-1.jdbc4</version> 
    </dependency> 

    <!-- Email validator,... --> 
    <!-- http://mvnrepository.com/artifact/commons-validator/commons- 
    validator --> 
    <dependency> 
     <groupId>commons-validator</groupId> 
     <artifactId>commons-validator</artifactId> 
     <version>1.5.0</version> 
    </dependency> 

    </dependencies> 


    <build> 
    <finalName>SpringMVCANnotationShoppingCart</finalName> 
    <plugins> 

    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.8</source> <!-- yours Java version --> 
      <target>1.8</target> <!-- yours Java version --> 
     </configuration> 
    </plugin> 

    </plugins> 
    </build> 
</project> 

MyDBAuthenticationService.java

package org.o7planning.springmvcshoppingcart.authentication; 
    import java.util.ArrayList; 
    import java.util.List; 
    import org.o7planning.springmvcshoppingcart.dao.AccountDAO; 
    import org.o7planning.springmvcshoppingcart.entity.Account; 
    import org.springframework.beans.factory.annotation.Autowired; 
    import org.springframework.security.core.GrantedAuthority; 
    import 
    org.springframework.security.core.authority.SimpleGrantedAuthority; 
    import org.springframework.security.core.userdetails.User; 
    import org.springframework.security.core.userdetails.UserDetails; 
    import org.springframework.security.core.userdetails.UserDetailsService; 
    import 
    org.springframework.security.core.userdetails.UsernameNotFoundException; 
    import org.springframework.stereotype.Service; 

@Service 
public class MyDBAuthenticationService implements UserDetailsService { 

@Autowired 
private AccountDAO accountDAO; 

@Override 
public UserDetails loadUserByUsername(String username) throws 
UsernameNotFoundException { 
    Account account = accountDAO.findAccount(username); 
    System.out.println("Account= " + account); 

    if (account == null) { 
     throw new UsernameNotFoundException("User " // 
       + username + " was not found in the database"); 
    } 

    // EMPLOYEE,MANAGER,.. 
    String role = account.getUserRole(); 

    List<GrantedAuthority> grantList = new ArrayList<GrantedAuthority>(); 

    // ROLE_EMPLOYEE, ROLE_MANAGER 
    GrantedAuthority authority = new SimpleGrantedAuthority("ROLE_" + role); 

    grantList.add(authority); 

    boolean enabled = account.isActive(); 
    boolean accountNonExpired = true; 
    boolean credentialsNonExpired = true; 
    boolean accountNonLocked = true; 

    UserDetails userDetails = (UserDetails) new User(account.getUserName(), 
// 
      account.getPassword(), enabled, accountNonExpired, // 
      credentialsNonExpired, accountNonLocked, grantList); 

    return userDetails; 
} 

} 

AplicationContextConfig.java

package org.o7planning.springmvcshoppingcart.config; 
import java.util.Properties; 
import javax.sql.DataSource; 
import org.hibernate.SessionFactory; 
import org.o7planning.springmvcshoppingcart.dao.AccountDAO; 
import org.o7planning.springmvcshoppingcart.dao.impl.AccountDAOImpl; 
import org.o7planning.springmvcshoppingcart.dao.OrderDAO; 
import org.o7planning.springmvcshoppingcart.dao.impl.OrderDAOImpl; 
import org.o7planning.springmvcshoppingcart.dao.ProductDAO; 
import org.o7planning.springmvcshoppingcart.dao.impl.ProductDAOImpl; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.context.support.ResourceBundleMessageSource; 
import org.springframework.core.env.Environment; 
import org.springframework.jdbc.datasource.DriverManagerDataSource; 
import org.springframework.orm.hibernate5.HibernateTransactionManager; 
import org.springframework.orm.hibernate5.LocalSessionFactoryBean; 
import 
org.springframework.transaction.annotation.EnableTransactionManagement; 
import org.springframework.web.multipart.commons.CommonsMultipartResolver; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 

@Configuration 
@ComponentScan("org.o7planning.springmvcshoppingcart.*") 
@EnableTransactionManagement 
// Load to Environment. 
@PropertySource("classpath:ds-hibernate-cfg.properties") 
public class ApplicationContextConfig { 

// The Environment class serves as the property holder 
// and stores all the properties loaded by the @PropertySource 
@Autowired 
private Environment env; 

@Bean 
public ResourceBundleMessageSource messageSource() { 
    ResourceBundleMessageSource rb = new ResourceBundleMessageSource(); 
    // Load property in message/validator.properties 
    rb.setBasenames(new String[] { "messages/validator" }); 
    return rb; 
} 

@Bean(name = "viewResolver") 
public InternalResourceViewResolver getViewResolver() { 
    System.out.println("Executing intervnal view Resolver"); 
    InternalResourceViewResolver viewResolver = new 
InternalResourceViewResolver(); 
    viewResolver.setPrefix("/WEB-INF/pages/"); 
    viewResolver.setSuffix(".jsp"); 
    return viewResolver; 
} 

// Config for Upload. 
@Bean(name = "multipartResolver") 
public CommonsMultipartResolver multipartResolver() { 
    CommonsMultipartResolver commonsMultipartResolver = new 
CommonsMultipartResolver(); 

    // Set Max Size... 
    // commonsMultipartResolver.setMaxUploadSize(...); 

    return commonsMultipartResolver; 
} 
@Autowired  
@Bean(name = "dataSource") 
public DataSource getDataSource() { 
    DriverManagerDataSource dataSource = new DriverManagerDataSource(); 

    // See: ds-hibernate-cfg.properties 
    dataSource.setDriverClassName(env.getProperty("ds.database-driver")); 
    dataSource.setUrl(env.getProperty("ds.url")); 
    dataSource.setUsername(env.getProperty("ds.username")); 
    dataSource.setPassword(env.getProperty("ds.password")); 

    System.out.println("## getDataSource: " + dataSource); 

    return dataSource; 
} 


@Bean(name = "sessionFactory") 
public SessionFactory getSessionFactory(DataSource dataSource) throws 
Exception { 
    Properties properties = new Properties(); 
System.out.println("Datasource"); 
    // See: ds-hibernate-cfg.properties 
    properties.put("hibernate.dialect", 
env.getProperty("hibernate.dialect")); 
    properties.put("hibernate.show_sql", 
env.getProperty("hibernate.show_sql")); 
    properties.put("current_session_context_class", 
env.getProperty("current_session_context_class")); 


    LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean(); 

    // Package contain entity classes 
    factoryBean.setPackagesToScan(new String[] { 
    "org.o7planning.springmvcshoppingcart.entity" }); 
    factoryBean.setDataSource(dataSource); 
    factoryBean.setHibernateProperties(properties); 
    factoryBean.afterPropertiesSet(); 
    // 
    SessionFactory sf = factoryBean.getObject(); 
    System.out.println("## getSessionFactory: " + sf); 
    return sf; 
} 

@Autowired 
@Bean(name = "transactionManager") 
public HibernateTransactionManager getTransactionManager(SessionFactory 
sessionFactory) { 
    HibernateTransactionManager transactionManager = new 
HibernateTransactionManager(sessionFactory); 

    return transactionManager; 
} 

@Bean(name = "accountDAO") 
public AccountDAO getApplicantDAO() { 
    return new AccountDAOImpl(); 
} 

@Bean(name = "productDAO") 
public ProductDAO getProductDAO() { 
    return new ProductDAOImpl(); 
} 

@Bean(name = "orderDAO") 
public OrderDAO getOrderDAO() { 
    return new OrderDAOImpl(); 
} 

@Bean(name = "accountDAO") 
public AccountDAO getAccountDAO() { 
    return new AccountDAOImpl(); 
} 

} 
+1

entsprechende Teile Ihrer Feder Config hinzufügen –

+0

füge deinen contro hinzu ller code, damit wir es überprüfen können – Hema

+0

_anybody_ ** help ** me? –

Antwort

0

Bitte mit Hibernate 5 in pom.xml:

<!-- Hibernate --> 
<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-core --> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>5.2.10.Final</version> 
</dependency> 

<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>5.2.10.Final</version> 
</dependency> 


<!-- http://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 --> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-c3p0</artifactId> 
    <version>5.2.10.Final</version> 
</dependency> 
Verwandte Themen