SpringMVC常用注解解析

@Autowired

自动装配,其作用是为了消除代码里面的getter/setter与bean中的property。当Spring发现 @Autowired 注解时,将自动在代码上下文中找到匹配的bean,并自动注入到相应的地方去。当Spring找不到bean时会抛出异常,将 @Autowired 注解的required属性设置为 false 不会抛出异常,会显示null

public class HelloDemo{
	@Autowired
	private UserService userService;
	
	@Autowired
	public void setUserService(UserService userService){
		this.userService = userService;
	}
}
@Component

在类定义之前添加@Component注解,它会被spring容器识别,并转化为一个bean对象

@Component 
public class Demo{
	@Autowired
	private UserService userService
}
@Repository

持久层、对Dao层实现类进行注解
UserDao.java

public interface UserDao{
	void insert();
}

UserDaoImpl.java

@Repository
public class UserDaoImpl implements UserDao{ //这里表示将UserDao类声明为bean
    public void insert(){
        System.out.println("调用UserDao方法");
    }
}
@Service

用于对业务逻辑层进行注解,标注业务层
UserService.java

public interface UserService{
	void add();
}

UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService{
	public void add(){
		System.out.println("调用了UserService方法");
	}
}
@Controller

用于控制层注解,不能用于方法上,只能用于类上,表示该类是一个控制器

@Controller
public class HelloWorld{
	
	@RequestMapping(value="/index")
	public String index() {
		return "index";
	}
}
@RequestMapping

用于处理请求地址的映射,可以作用于类和方法上

  • value:定义request请求是映射地址
  • method:定义request的请求方法,这些方法包括【GET, POST, PUT,DELETE】默认接受GET请求,如果请求方式和定义的方式不一样则请求无法成功
  • params:定义request请求中必须包含参数值
  • headers:定义request请求中必须包含某些指定的请求头
  • consumes:定义请求提交内容的类型
  • produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
@RequestMapping("index/login")
public String send(){
	return "login"
}
@RequestMapping(method = RequestMethod.POST) //只接受POST方法传过来的值
public String dispaly(){
	return "login"
}
@RequestParam

用于获取传入的参数值

  • value:参数名称
  • required:定义该传入参数是否必须,默认为true,和@RequestMapping的params属性有点相似
@Controller
public class Demo{
	@RequestMapping("/index")
	public String execute(String username, @RequestParam(value="pwd", required=false)String password) {
        System.out.println("Hello SpringMVC");
        System.out.println(username);
        System.out.println(password);
        return "index";
    }
}
@Resource

默认通过byname的形式来直接通过反射的机制加入机制的,这个和我们前面的@Qualifier在功能上是一致的,当然我们也可以采用type的参数来进行注入,这个就和 @Autowired 功能上一致了,习惯上 @Resource 我们更会把其放在get set方法上。而前面的 @Autowired 则放在字段上更多一些,这也符合Spring和反射机制对面向对象的要求。

public class Demo{
	@Resource(name="userDao")
	private UserDao userDao; //注入字段上

	@Resource(name="userDao")
	public void setUserDao(UserDao userDao){ //用于属性setter方法上
		this.userDao = userDao;
	}
}

你可能感兴趣的:(SpringMVC)