注解

@Resouce和@Autowired

public class UserService {
    @Autowired
    @Qualifier(name="userDao1")    
    private UserDao userDao; 
}
// 当一个类型有多个bean值的时候,会造成无法选择具体注入哪一个的情况,这个时候我们需要配合着@Qualifier使用。

public class UserService {
    @Resource  
    private UserDao userDao; 
    @Resource(name="studentDao")  
    private StudentDao studentDao; 
    @Resource(type="TeacherDao")  
    private TeacherDao teacherDao; 
    @Resource(name="manDao",type="ManDao")  
    private ManDao manDao; 
}
// @Resource默认使用byName的形式进行装配,userDao 
// @Resource可以减少代码和Spring之间的耦合。

@RequestParam、@RequestBody和@ModelAttribute区别

public String requestParamTest(String username, HttpServletRequest request){}
// 注:http中的参数可以逐个取也可以一次取出整个request对象
@RequestParam(value="username") String userName 
// 转换get或者post中的参数到变量中,如username转成userName,逐个取

@RequestParam用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。提交方式为get或post。(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型) RequestParam实质是将Request.getParameter() 中的Key-Value参数Map利用Spring的转化机制ConversionService配置,转化成参数接收对象或字段
get方式中query String的值,和post方式中body data的值都会被Servlet接受到并转化到Request.getParameter()参数集中,所以@RequestParam可以获取的到。

@ExceptionHandler(RuntimeException.class) 与@ControllerAdvice

// 使用@ExceptionHandler,可以处理异常, 但是仅限于当前Controller中处理异常, @ControllerAdvice可以配置basePackage下的所有controller. 所以结合两者使用,就可以处理全局的异常了.
// 控制器增强
@ControllerAdvice
public class ControllerHanderException {
    // 自定义异常类型
    @ExceptionHandler(CustomException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public Map<String, Object> handleUserNotExistException(CustomException excep) {
        Map<String, Object> result = new HashMap<>();
        result.put("code", excep.getCode());
        result.put("msg", excep.getMessage());
        result.put("data",new ArrayList<>());
        return result;
    }
}
public class CustomException  extends RuntimeException {
    private static final long serialVersionUID = 7965835132529665832L;
    private String code;
    private String msg;
    public CustomException(String code, String msg){
        super(msg);
        this.code = code;
        this.msg = msg;
    }
    public CustomException(String msg){
        super(msg);
        this.code = "500";
        this.msg = msg;
    }
    public CustomException(CodeEnum codeEnum){
        super(codeEnum.getMsg());
        this.code = codeEnum.getCode();
        this.msg = codeEnum.getMsg();
    }
    public String getCode() {
        return code;
    }
    public String getMsg() {
        return msg;
    }
}

@ResponseStatus改变报文状态

@ResponseStatus注解加在目标方法上,一定会抛出异常。但是如果没有发生异常的话方法会正常执行完毕。
@ResponseStatus注解加在自定义异常类上
@ResponseStatus注解配合@ExceptionHandler注解使用会更好
注:serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

@RestController

@Controller+@ResponseBody两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了

扫描注解

<context:component-scan base-package="com.spring.mvc.controller"/>
扫描指定的包中的类上的注解,常用的注解有:
@Controller 声明Action组件
@Service    声明Service组件    @Service("myMovieLister") 
@Repository 声明Dao组件
@Component   泛指组件, 当不好归类时. 
@RequestMapping("/menu")  请求映射
@Resource  用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanName") 
@Autowired 用于注入,(srping提供的) 默认按类型装配 
@Transactional( rollbackFor={Exception.class}) 事务管理
@ResponseBody
@Scope("prototype")   设定bean的作用域

ioc相关

@Configuration @bean @Value
// 配置注解,将定义
@Configuration 
public class MainConfig {  
//在properties文件里配置  
    @Value(“${wx_appid}”)  
      public String appid;  
     protected MainConfig(){}  
    @Bean  
    public WxMpService wxMpService() {  
        WxMpService wxMpService = new WxMpServiceImpl();  
        wxMpService.setWxMpConfigStorage(wxMpConfigStorage());  
        return wxMpService;  
    }  
}  

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容