• SpringMVC笔记3--annotation


    SpringMVC使用annotation可以减少配置文件的书写。要启动annotation的功能,首先需要在SpringMVC的配置文件中配置下面的标签。

    <mvc:annotation-driven />
    <context:component-scan base-package="com.my.webstore" />
    

    annotation主要有以下这些:
    @Controller 修饰一个Controller类,是表现层组件
    @RequestMapping 绑定一个url到controller类或者controller中的函数。
    @Repository 表示组件是一个资源类,这个资源类主要是一些CURD操作的函数,直接和数据库交互,为持久层组件
    @Service 表明是一个Service组件,其中会依赖到一些Repository 组件,调用Repository的多个CURD操作。表示业务的逻辑,为业务层组件

    范例:

    @Controller,@RequestMapping

    package com.my.webstore.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.stereotype.Repository;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.my.webstore.domain.repository.ProductRepository;
    
    @Controller
    public class HomeController {
    	
    	@Autowired
    	private ProductRepository repository;
    	
    	@RequestMapping("/products")
    	public String welcome(Model model) {
    		model.addAttribute("greeting", "Welcome	to	Web	Store!");
    		model.addAttribute("tagline", "The	one	and	only	amazing	webstore");
    		
    		model.addAttribute("products", repository.getAllProducts());
    		
    		return "index";
    	}
    }
    
    

    @Repository

    package com.my.webstore.domain.repository.impl;
    
    import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.stereotype.Repository;
    
    import com.my.webstore.domain.Product;
    import com.my.webstore.domain.repository.ProductRepository;
    
    @Repository
    public class ProductRepositoryImpl implements ProductRepository {
    	private List<Product> list = new ArrayList<Product>();
    
    
    	public ProductRepositoryImpl() {
    		Product iphone = new Product("P1234", "iPhone	5s", new BigDecimal(500));
    		iphone.setDescription("Apple	iPhone	5s	smartphone	with	4.00-inch	640x1136	display	and	8-megapixel	rear	camera");
    		iphone.setCategory("Smart	Phone");
    		iphone.setManufacturer("Apple");
    		iphone.setUnitsInStock(1000);
    
    		Product laptop_dell = new Product("P1235", "Dell	Inspiron",
    				new BigDecimal(700));
    		laptop_dell
    				.setDescription("Dell	Inspiron	14-inch	Laptop	(Black)	with	3rd	Generation	Intel	Core	processors");
    		laptop_dell.setCategory("Laptop");
    		laptop_dell.setManufacturer("Dell");
    		laptop_dell.setUnitsInStock(1000);
    
    		Product tablet_Nexus = new Product("P1236", "Nexus	7", new BigDecimal(
    				300));
    		tablet_Nexus
    				.setDescription("Google	Nexus	7	is	the	lightest	7	inch	tablet	With	a	quad-core	Qualcomm	Snapdragon™	S4	Pro	processor");
    		tablet_Nexus.setCategory("Tablet");
    		tablet_Nexus.setManufacturer("Google");
    		tablet_Nexus.setUnitsInStock(1000);
    
    		list.add(iphone);
    		list.add(laptop_dell);
    		list.add(tablet_Nexus);
    
    	}
    	
    	public List<Product> getAllProducts() {
    		// TODO Auto-generated method stub
    		return list;
    	}
    
    	public Product getProductById(String productId) {
    		// TODO Auto-generated method stub
    		if (productId == null) {
    			throw new IllegalArgumentException("productId can't be null");
    		}
    		Product tmpProduct = null;
    		for (Product product : list) {
    			if (product.getProductId().equals(productId)) {
    				tmpProduct =  product;
    				break;
    			}
    		}
    		
    		if (tmpProduct == null) {
    			throw new IllegalArgumentException("product can not be found:"+productId);
    		}
    		
    		return tmpProduct;
    	}
    }
    

    @Service

    package com.my.webstore.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.my.webstore.domain.Product;
    import com.my.webstore.domain.repository.ProductRepository;
    
    @Service
    public class OrderServiceImpl implements OrderService {
    	
    	@Autowired
    	private ProductRepository repository;
    
    	public void processOrder(String productId, int count) {
    		// ODO Auto-generated method stub
    		Product product = repository.getProductById(productId);
    		if (product.getUnitsInStock() < count) {
    			throw new IllegalArgumentException("");
    			
    		}
    		product.setUnitsInStock(product.getUnitsInStock()- count);
    		
    	}
    
    }
    
    
  • 相关阅读:
    安装python包
    在RHEL5.4上升级Python
    IronPython开发Windows Form程序总结
    Windows下手动配置Oracle Client的要点
    dreampie一个很不错的python命令行交互工具
    Eclipse插件汇总
    pyDbRowFactory Python版Db Row Factory
    如何让Jython自动加载一个Jar包
    跨计算机执行的几个方法
    Python 版 Instance Activator
  • 原文地址:https://www.cnblogs.com/xiaozu/p/4639006.html
Copyright © 2020-2023  润新知