@注解说明

SpringBoot

注解作用
@Configuration配置类,保持并拓展springboot配置,类型必须是WebMvcConfiguer
@Bean注入配置
@PropertySource加载指定的配置文件【1】
@configurationProperties默认从全局配置文件中获取值 【2】
@validated校验数据 【3】
@Conditional根据不同的条件判断,如果满足指定的条件,整个配置类里面的配置就会生效
@Async告诉Spring这是一个异步方法,但是要让这个注解生效,我们还需要在主程序上添加一个注解@EnableAsync ,开启异步注解功能;【4,5,6】
@Scheduled(cron = “0 * * * * 0-7”)定时任务(秒 分 时 日 月 周几)【5】
@EnableScheduling开启基于注解的定时任务,在主程序上添加【6】
@Reference远程引用指定的服务,他会按照全类名进行匹配,看谁给注册中心注册了这个全类名【7】
@Accessors(chain = true)链式写法 默认false

【3】

@NotNull(message=“名字不能为空”)
private String userName;
@Max(value=120,message=“年龄最大不能查过120”)
private int age;
@Email(message=“邮箱格式错误”)
private String email;

空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY.

Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false

长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) string is between min and max included.

日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则

mybatis 层

注解作用
@Param基本类型的参数或者String类型,需要加上,引用类型不需要【1】

【1】

Sql中引用的就是@Param("")中设定的属性名
#{}加注解能很大程度防止sql注入。preparedStatement
${}中传入的值会进行拼接,无法防止sql注入 statement

spring层

注解作用
@Autowired在Spring中自动注入,通过类型。【1】
@Qualifier可指定beanId【2】
@Resource在Spring中是java层面的注解,也可实现自动装配。并且是组合注解【3】
@Nullable段标记了这个注解,说明这个字段可以为null;
@Component @Repository @Service @Controller在Spring中组件放在类上,说明这个类被Spring管理了,就是bean【4】
@Value赋值【5】
@Scope()作用域:singleton,prototype【6】
@Aspect 、@Before、@Round 在AOP中标注这个类是个切面,要开启aop注解支持

【1】

@Compoent和@Value可代替。
@Autowired就是自动装配属性,相当于

  <!--property 可以直接注入属性的值-->
 <bean id="user" class="com.my.User" p:name="属性值" p:age="属性值"/>

只负责自动装配p:name=" “,而具体属性的值由@Qualifier(value=”")来配合使用

使用注解前提:
1.导入约束

xmlns:context="http://www.springframework.org/schema/context"  
======================================
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd

2.开启注解的支持【重要】

<context:annotation-config/>

3.注意:最终还是通过byName实现,要注意实体类属性名和beanId一致。

【2】

在这里插入图片描述
如果显示定义了Autowired的required属性为false,说明这个对象可以为null,否则不允许为空

【3】

@Resource(name=“beanId”)指定beanId
自动注入通过名字,名字没找到,通过类型。相当于@Autowired+@Qualifier。

【4】

//等价于  <bean id="user" class="com.my.pojo.User"/>
@Component
public class User {
    public String name="aaa";
}
@Conponent有几个衍生注解,我们在web开发中 ,会按照mvc三层框架分层!
 #pojo 【@Conponent】
 #dao   【@Repository】
 #service 【@Service】
 #controller 【@Controller/*@Controller包含了映射器和适配器*/
 它们四个是等价的,都会被装配到Spring中。

【5】

相当于<property name="name" value="张三"/>

@Component
public class User {
    @Value("张三")
    public String name;
}

【6】

singleton建议用于单线程,容器创建的对象的个数全局唯一。
不管调用多少次,只用全局这一个。

<bean id="user" class="com.my.User" p:name="张三" p:age="34" scope="singleton"/>

prototype建议用于多线程,容器创建的对象有多个。
调用一次,创建一次。

 <bean id="user" class="com.my.User" p:name="张三" p:age="34" scope="prototype"/>

springMVC层

注解作用
@RequestMapping、 @GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping在Springmvc中可以使用约束请求类型
@PathVariable在Springmvc中可以使用@PathVariable注解,RestFul风格让方法参数的值对应绑定到一个Url模板变量 【1】
@RequestParam在Springmvc中@RequestParam约束1.参数只能从前端传过来,不能是随意的值 2.只能是约束的值 【2】
@ResponseBody在类上使用。不走视图解析器,直接在页面返回字符串【3】,配合Controller使用
@RestController指定类只返回字符串(JSon转换)

【1】

RestFul风格

//以post方式去请求,不可以在url中传参
    @PostMapping("/hello/{a}/{b}")//绑定URL模板,路径可以是任何符号
    public  String hello(@PathVariable String a, @PathVariable String b,Model model){
          String res=a+b;
          model.addAttribute("restful","结果为:PostMapping:"+res);
            return "hello";//返回字符串是视图的名字,会被解析器解析

    }

【2】

/*@Controller包含了映射器和适配器*/
@Controller
public class MyController {
    /*@RequestParam约束1.参数只能从前端传过来,不能是随意的值 2.只能是username。*/
    //url:http://localhost:8080/test1/t1?username=章
    @GetMapping("/t1")
    public String test1(@RequestParam("username")String name, Model model){

        //1.从前端传到值,看控制台
        System.out.println(name);
        //2.将返回值的结果传送给前端,用Model
        model.addAttribute("msg",name);
        //视图跳转
        return "add";

    }
}

【3】

@Controller
public class UserController {

   @RequestMapping("/json1")
   @ResponseBody
   public String json1() throws JsonProcessingException {
       //创建一个jackson的对象映射器,用来解析数据
       ObjectMapper mapper = new ObjectMapper();
       //创建一个对象
       User user = new User("s", 3, "男");
       //将我们的对象解析成为json格式
       String str = mapper.writeValueAsString(user);
       //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
       return str;
  }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@Bean注解@Component注解都是Spring框架中用来标识一个类为Bean的注解,它们有一些共同点和区别。 共同点: 1. 标识Bean:无论是@Bean注解还是@Component注解,它们都可以用来标识一个类为Spring容器中的Bean。 2. 自动注册:被@Bean注解@Component注解标识的类会被Spring容器扫描并注册为Bean,可以在其他地方通过@Autowired注解进行注入。 3. 依赖注入:无论是@Bean注解还是@Component注解,它们都可以用于依赖注入,即在其他Bean中通过@Autowired注解引用。 区别: 1. 使用方式:@Bean注解通常用于Java配置方式中,即通过@Configuration注解的类来进行配置;而@Component注解是通用的注解,可以用于任何场景,包括Java配置方式和XML配置方式。 2. 方法级别 vs 类级别:@Bean注解通常用于方法上,表示将方法返回的对象注册为Bean;而@Component注解通常用于类级别,表示将整个类注册为Bean。但是,在使用@Component注解时,也可以用于方法上,效果与@Bean注解类似。 3. 细分注解@Component注解还有一些派生注解,如@Service、@Repository、@Controller等,用于标识不同类型的Bean。这些派生注解在功能上与@Component注解是一样的,只是为了更好地区分和组织不同类型的Bean。 4. 参数注入:@Bean注解的方法可以接受参数,这些参数可以是其他的Bean,也可以是普通的Java对象;而@Component注解的类不能直接接受参数,需要使用构造函数或setter方法来进行注入。 总的来说,@Bean注解适用于Java配置方式,主要用于方法级别的Bean注册;@Component注解适用于通用的Bean注册场景,主要用于类级别的Bean注册,并且还有一些派生注解用于标识不同类型的Bean。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值