Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Exception encountered during context initialization - cancelling refresh attempt:
- org.springframework.beans.factory.UnsatisfiedDependencyException:
- Error creating bean with name 'categoryDAO': Unsatisfied dependency expressed through field
- 'sessionFactory'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
- No qualifying bean of type 'org.hibernate.SessionFactory' available:
- expected at least 1 bean which qualifies as autowire candidate.
- Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
- @Entity
- public class Category {
- /*
- * private fields
- */
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private int id;
- private String name;
- private String description;
- @Column(name = "img_url")
- private String imageurl;
- @Column(name = "is_active")
- private boolean active = true;
- /*
- * getters and setters
- */
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getDescription() {
- return description;
- }
- public void setDescription(String description) {
- this.description = description;
- }
- public String getImageurl() {
- return imageurl;
- }
- public void setImageurl(String imageurl) {
- this.imageurl = imageurl;
- }
- public boolean isActive() {
- return active;
- }
- public void setActive(boolean active) {
- this.active = active;
- }
- @Override
- public String toString() {
- return "Category [id=" + id + ", name=" + name + ", description=" + description + ", imageurl=" + imageurl
- + ", active=" + active + "]";
- }
- }
- @Controller
- public class PageController {
- @Autowired
- private CategoryDAO categoryDAO;
- @RequestMapping(value = { "/", "/home", "/index" })
- public ModelAndView index() {
- ModelAndView mv = new ModelAndView("page");
- mv.addObject("title", "home");
- //passing the list of categories
- mv.addObject("categories", categoryDAO.list());
- mv.addObject("userClickHome", true);
- return mv;
- }
- @RequestMapping(value = { "/about" })
- public ModelAndView about() {
- ModelAndView mv = new ModelAndView("page");
- mv.addObject("title", "About us");
- mv.addObject("userClickAbout", true);
- return mv;
- }
- @RequestMapping(value = { "/contact" })
- public ModelAndView contact() {
- ModelAndView mv = new ModelAndView("page");
- mv.addObject("title", "Contact us");
- mv.addObject("userClickContact", true);
- return mv;
- }
- @RequestMapping(value = "/show/all/products")
- public ModelAndView showAllProducts() {
- ModelAndView mv = new ModelAndView("page");
- mv.addObject("title", "All products");
- //passing the list of categories
- mv.addObject("categories", categoryDAO.list());
- mv.addObject("userClickAllProducts", true);
- return mv;
- }
- @RequestMapping(value = "/show/category/{id}/products")
- public ModelAndView showCategoryProducts(@PathVariable("id") int id) {
- ModelAndView mv = new ModelAndView("page");
- // categoryDAO to fetch a single category
- Category category = null;
- category = categoryDAO.get(id);
- mv.addObject("title", category.getName());
- //passing the list of categories
- mv.addObject("categories", categoryDAO.list());
- //passing the list of category object
- mv.addObject("category", category);
- mv.addObject("userClickCategoryProducts", true);
- return mv;
- }
- }
- @Repository("categoryDAO")
- public class CategoryDAOImpl implements CategoryDAO {
- @Autowired
- private SessionFactory sessionFactory;
- private static List<Category> categories = new ArrayList<>();
- //private static CategoryDAO categoryDAO;
- static {
- Category category = new Category();
- // first category
- category.setId(1);
- category.setName("Television");
- category.setDescription("This is some description for television");
- category.setImageurl("CAT_1.png");
- categories.add(category);
- // second category
- category = new Category();
- category.setId(2);
- category.setName("Mobile");
- category.setDescription("This is some description for mobile");
- category.setImageurl("CAT_2.png");
- categories.add(category);
- // third category
- category = new Category();
- category.setId(3);
- category.setName("laptop");
- category.setDescription("This is some description for laptop");
- category.setImageurl("CAT_3.png");
- categories.add(category);
- }
- @Override
- public List<Category> list() {
- // TODO Auto-generated method stub
- return categories;
- }
- @Override
- public Category get(int id) {
- //ecnhanced for loop
- for(Category category : categories) {
- if(category.getId() == id) return category;
- }
- return null;
- }
- @Override
- @Transactional
- public boolean add(Category category) {
- try {
- //add the category to the database table
- sessionFactory.getCurrentSession().persist(category);
- return true;
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- }
- @Service
- public interface CategoryDAO {
- List<Category> list();
- Category get(int id);
- boolean add(Category category);
- }
- @Configuration
- @ComponentScan(basePackages = {"net.kzn.shoppingbackend.dao"})
- @EnableTransactionManagement
- public class HibernateConfig {
- // change the below based on the DBMS you choose
- private final static String DATABASE_URL = "jdbc:h2:tcp://localhost/~/onlineshopping";
- private final static String DATABASE_DRIVER = "org.h2.Driver";
- private final static String DATABASE_DIALECT = "org.hibernate.dialect.H2Dialect";
- private final static String DATABASE_USERNAME = "sa";
- private final static String DATABASE_PASSWORD = "";
- // database bean will be available
- @Bean
- public DataSource getDataSource() {
- BasicDataSource dataSource = new BasicDataSource();
- // providing the database connection information
- dataSource.setDriverClassName(DATABASE_DRIVER);
- dataSource.setUrl(DATABASE_URL);
- dataSource.setUsername(DATABASE_USERNAME);
- dataSource.setPassword(DATABASE_PASSWORD);
- return dataSource;
- }
- // sessionFactory bean will be available
- public SessionFactory getSessionFactory(DataSource dataSource) {
- LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource);
- builder.addProperties(getHibernateProperties());
- builder.scanPackages("net.kzn.shoppingbackend.dto");
- return builder.buildSessionFactory();
- }
- // All the hibernate properties will be returned in this method
- private Properties getHibernateProperties() {
- Properties properties = new Properties();
- properties.put("hibernate.dialect", DATABASE_DIALECT);
- properties.put("hibernate.show_sql", "true");
- properties.put("hibernate.format_sql", "true");
- return properties;
- }
- // transactionManager bean
- public HibernateTransactionManager geTransactionManager(SessionFactory sessionFactory) {
- HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
- return transactionManager;
- }
- }
- public class CategoryTestCase {
- private static AnnotationConfigApplicationContext context;
- private static CategoryDAO categoryDAO;
- private Category category;
- @BeforeClass
- public static void init() {
- context = new AnnotationConfigApplicationContext();
- context.scan("net.kzn.shoppingbackend");
- context.refresh();
- categoryDAO = (CategoryDAO) context.getBean("categoryDAO");
- }
- @Test
- public void testAddCategory() {
- category = new Category();
- category.setName("Television");
- category.setDescription("This is some description for television");
- category.setImageurl("CAT_1.png");
- assertEquals("successfully added a category inside the table!", true, categoryDAO.add(category));
- }
- }
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>net.kzn</groupId>
- <artifactId>shoppingbackend</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>shoppingbackend</name>
- <url>http://maven.apache.org</url>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <spring.version>4.3.19.RELEASE</spring.version>
- <hibernate.version>5.2.7.Final</hibernate.version>
- </properties>
- <dependencies>
- <!-- JUNIT version 4.12 -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <!-- spring -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-orm</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <!-- H2 database -->
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.4.197</version>
- </dependency>
- <!-- Hibernate Dependency -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>${hibernate.version}</version>
- <exclusions>
- <exclusion>
- <groupId>dom4j</groupId>
- <artifactId>dom4j</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <!-- database connection pooling -->
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-dbcp2</artifactId>
- <version>2.1.1</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.1</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
Add Comment
Please, Sign In to add comment