spring注解大全与说明

@Controller: 标识一个类是Spring MVC controller处理器, 用来创建处理http请求的对象

@Controller
public class TestController {
    @RequestMapping("/test")
    public String test () {
        String str = "Spring 注解大全";
        return str;
    }
}

@RestController: 这个注解是spring4加入的, 没有这个注解之前在@Controller中返回json需要@ResponseBody来配合,如果直接使用@RestController替代@Controller就不需要在配置@ResponseBody,默认返回json格式;

@RestController
public class TestController {

    @RequestMapping("/test")
    public String test () {
        String str = "Spring 注解大全";
        return str;
    }
}

@Service: 主要用于标注业务层组件,其实就是用注解的方式把这个类注入到spring配置中;

@Autowired: 用来装配bean, 可以写在字段或者方法上, 默认情况下要求依赖对象必须存在, 如果要允许为null值, 可以设置它的required属性为false, 例如: @Autowired(required=false)

@RequestMapping: 提供请求映射地址,相当于请求的url.

@RequestParam: 用于将请求参数映射到功能处理方法上, 例如:

public String test(@RequestParam Integer age) {
    String str = "";
    return str;
}

这个age就是接收从接口传递过来参数age的值, 如果接口传递过来的参数名与接收的参数名不一致则可以如下设置:

public String test(@RequestParam("people_age") Integer age) {
    String str = "";
    return str;
}

其中people_age就是接口传递过来的参数, age是映射people_age的参数名,

@Cacheable: 用来标记缓存查询, 用于方法或者类中

当标记在方法上时表示该方法是支持缓存的,

当标记在类上时表示该类中的所有方法都支持缓存的;

参数解释例子
value名称@Cacheable(value={”a1”,”a2”}
keykey@Cacheable(value=”a1”,key=”#id”)
condition条件@Cacheable(value=”a1”,condition=”#id=1”)

比如: @Cacheable(value="orderCache")标识的是当调用标记了这个注解的方法时,逻辑默认加上从缓存获取结果的逻辑, 如果缓存中没有数据,则执行用户编写查询逻辑, 查询成功后同时将结果放到缓存中,说到缓存一般都是key-value形式的, 因此key就是方法中的参数(id),value就是查询的结果, 而命名空间OrderCache是在spring*.xml文件中定义的.

@Cacheable(value = "orderCache")
public Order getOrderName(String id) {
    Order order = new Order();
    order = getOrder(id);
    return order;
}

@CacheEvict: 用来标记要清空缓存的方法, 当这个方法被调用后即会清空缓存,@CacheEvict(value = "OrderCache")

参数列表

参数解释例子
value名称@CachEvict(value={”b1”,”b2”}
keykey@CachEvict(value=”b1”,key=”#id”)
condition缓存的条件,可以为空 
allEntries是否清空所有缓存内容@CachEvict(value=”b1”,allEntries=true)
beforeInvocation是否在方法执行前就清空@CachEvict(value=”b1”,beforeInvocation=true)

@Resource: @Resource的作用相当于@Autowired,区别为@Autowired按byType自动注入, 而@Resource是按byName自动注入的,@Resource有两个属性比较重要,分别是name和type,Spring将@Resource注解的name属性解析为bean的名字, 而type属性则解析为bean的类型,所以如果使用name属性, 则使用byName的自动注入策略, 而使用type的则使用byType的自动注入策略, 如果name与type都不指定,则通过反射机制使用byName自动注入策略.

    @Resource的装配顺序,

  1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

  2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常

  3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常

  4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

@Repository: 用于标注访问数据组件, 即DAO组件,

@Component: 泛指组件,当组件不好归类时,可以使用这个注解进行标注

@Scope: 用来配置spring bean的作用域, 它标识bean的作用域, 默认是单例,

     singleton: 单例模式, 全局有且仅有一个实例

     prototype: 原型模式, 即每次获取bean时均会有一个新的实例[多例]

     request: request表示针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效

     session: session表示针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效

     global session: 只在portalt应用中应用, 给每一个global http session 新建一个Bean实例

@Required: 适用于bean属性的setter方法, 并表示受影响的bean属性必须在xml文件配置时进行填充,否则,容器会抛出一 个                  BeanInitializationException异常.

@Qualifier: 当你创建多个具有相同类型的 bean 时,并且想要用一个属性只为它们其中的一个进行装配,在这种情况下,你可              以           使用 @Qualifier 注释和 @Autowired 注释通过指定哪一个真正的 bean 将会被装配来消除混乱。

@Bean: 该注解用于告诉方法产生一个Bean对象, 然后这个bean对象交给spring管理(和xml配置文件中的bean标签作用一致).

@Configuration: 该注解主要作用在类上,表明该类是一个配置类,相当于xml文件, 属于java配置的方式,该方式是 Spring4.x推荐的配置方式, 可完全替代xml配置。

@Configuration
public class ShiroConfig {
    @Bean(name = "myRealm")
    public MyRealm myAuthRealm() {
        MyRealm myRealm = new MyRealm();
        log.info("myRealm注册完成");
        return myRealm;
    }
}@GetMapping: spring4.3中引入了{@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping}  来帮助简化常用的HTTP方法映射, 并更好的表达被注解方法的含义. 以@GetMapping注解为例, @GetMapping是一个组合注解, 是@RequestMapping(method=RequestMethod.GET) 的缩写, 该注解将Http Get 映射到特定的处理方法上, @GetMapping 与 @RequestMapping的区别是 @GetMapping不支持@RequestMapping的自定义属性.

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值