精华内容
参与话题
问答
  • 一些常用注解 springBoot注解

    千次阅读 2020-06-29 13:35:10
    SpringBoot的一些常用注解 放入容器注解 容器取出注解 功能性注解 1、@Component:放在类上,把普通类实例化到spring容器中。可以说很多注解都是基于这个注解的。 2、@Bean: 放在方法上,用@Bean标注方法等价于XML...

    SpringBoot的一些常用注解

    放入容器注解

    容器取出注解

    功能性注解
    1、@Component:放在类上,把普通类实例化到spring容器中。可以说很多注解都是基于这个注解的。

    2、@Bean: 放在方法上,用@Bean标注方法等价于XML中配置bean,这个方法一般返回一个实体对象,告诉spring这里产生一个对象,然后这个对象会交给Spring管理。产生这个对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的容器中。

    3、@Configuration:标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。(其实就是靠@Component注解)

    3、@Configuration:标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。(其实就是靠@Component注解)

    实例:
    @ConfigurationProperties(prefix = “spring.datasource.test1”)
    public class Datasource1 {
        private String url;
        private String username;
        private String password;
        get - - set方法
    }
    application.properties:
    spring.datasource.test1.url=jdbc:mysql://localhost:3307/multipledatasource1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
    spring.datasource.test1.username=root
    spring.datasource.test1.password=root
    spring.datasource.test1.driver-class-name=com.mysql.cj.jdbc.Driver
    

    @Value : value的作用其实和ConfigurationProperties作用差不多,就是读取配置文件中参数的值,但是value是放在变量上面的,且是单值读取,还有一点就是value标注的变量并不需要和配置文件的参数名字一致。

    语法:
    @Value(“${参数}”)
    private String 变量名字
    application.properties:
    参数=值
    注意:配置文件中的参数和value表达式中的参数名字是要保持一致的
    

    @RestController、@Controller、@Service、@Repository:
    这四个注解熟悉吗?我想大家一定知道这四个注解各自的作用,但是这里需要强调一点就是他们其实是一样的,至少在spring5.x之前,他们实质上是没有什么区别的(当然你非要说@RestController=@Controller+@ResponseBody 这个也对)。我这边主要是要强调,他们实质上都是依靠于@Component注解的,我们可以查看源码。

    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Controller {
        String value() default "";
    }
    
    
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    @Component
    public @interface Service {
        String value() default "";
    }
    
    

    从容器中取出型注解

    @Resource:按照名称注入,当找不到与名称匹配的bean才会按照类型注入其实我们平时用的@Resource都是用了他的默认的方式,即都不指定名字和类型。spring通过反射机制使用byName方法自动注入。

    @Resource(type = ShiroService.class, name = "shiroService")  
    private ShiroService shiroService;
    

    @Resource 的装配顺序:

    1. 如果同时指定了 name 属性和 type 属性,那么 Spring 将从容器中找唯一匹配的 bean 进行装配,找不到则抛出异常
    2. 如果指定了 name 属性值,则从容器中查找名称匹配的 bean 进行装配,找不到则抛出异常
    3. 如果指定了 type 属性值,则从容器中查找类型匹配的唯一的 bean 进行装配,找不到或者找到多个都会抛出异常
    4. 如果都不指定,则会自动按照 byName 方式进行装配

    @Autowried:默认是按照类型进行装配注入,如果允许 null 值,可以设置它 required 为false。即:当不能确定 Spring 容器中一定拥有某个类的 Bean 时,可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false) ,这等于告诉 Spring:在找不到匹配 Bean 时也不报错。

    @Autowired(required = false) 
    private ShiroService shiroService;
    

    @Qualifier:@Autowired是根据类型进行自动装配的。如果当spring上下文中存在不止一个A类型的bean时,就会抛出BeanCreationException异常;如果Spring上下文中不存在A类型的bean,而且我们又使用A类型,也会抛出BeanCreationException异常。针对存在多个A类型的Bean,我们可以联合使用@Qualifier和@Autowired来解决这些问题。

    简单来说,Qualifier就是规定一下Bean的名字,相当于@Resource规定了name属性。

    @Autowried @Qualifier("adminDAO") 
    private AdminDAO adminDAO;
    

    功能型注解

    1、@SpringBootApplication:这个注解就是集成了:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan这三个注解。其中@SpringBootConfiguration:表示这个类为配置类;@EnableAutoConfiguration:表示开启自动配置,我们平时所说springboot无配置就是这个参数起的作用,他读取了springboot默认的配置;@ComponentScan:表示自动扫描,这个扫描默认只能扫同一级的目录。

    2、@EnableConfigurationProperties:将带有@ConfigurationProperties注解的类注入为Spring容器的Bean。如果使用了@ConfigurationProperties但是没有在启动类上增加这个注解,则@ConfigurationProperties将不起作用。

    3、@Async与@EnableAsync:其中@Async表示这个方法为异步方法;@EnableAsync这个注解需要加在启动类上,表示支持异步操作;如果不加,则@Async将不起作用。

    @Scheduled与@EnableScheduling: 定时任务。@EnableScheduling这个注解需要加在启动类上,表示支持定时任务。

     @Scheduled(cron = "0/5 * *  * * ? ")
        public void doTest() {
            System.out.println(new SimpleDateFormat("YYYY-MM-dd HH:mm:ss").format(new Date()));
        }
    
    
    展开全文
  • 注解 SpringMvc 获取请求头(放在方法参数中) @RequestHeader value 请求头的名称 required 是否必须含有该请求头 获取cookie @Cookievalue value cookie名称 required 文件上传案例 三要素 表单项type 提交...
    1. 注解
      SpringMvc
      获取请求头(放在方法参数中)
      @RequestHeader
      value 请求头的名称
      required 是否必须含有该请求头
      获取cookie
      @Cookievalue
      value cookie名称
      required

    2. 文件上传案例

    • 三要素
      • 表单项type
      • 提交方式
      • enctype属性是多部份表单形式 , enctype=“mutipart/form-data”

    件上传主要使用了MultipartFile类,springMVC以及帮我们将长传的文件封装到该类中,只需要获取该类的方法去获取文件名称和转换文件存储即可。

    单文件上传

    //单文件上传
    //多文件上传只需要把参数改成数组形式,并对数组进行遍历
    //file名称要跟表单的input 的name相同
    //@RequestParam("file")注解要求请求需要携带file参数,否则请求失败,同时file要与MultipartFile的参数名相同
    @PostMapping("/upload")
    	public void upload(HttpServletRequest request,
    			@RequestParam("file") MultipartFile file) throws IllegalStateException, IOException {
    		System.out.println(file.getOriginalFilename());
    		System.out.println(request.getContextPath());
    		String pathString=new String("src/main/resources/static/");
    		File file2=new File(pathString+file.getOriginalFilename());
    		System.out.println(file2.getAbsolutePath());
    		//将文件保存你到file2中
    		//需要获取绝对路径
    		file.transferTo(file2.getAbsoluteFile());
    		
    		//下面是根据类路径来保存
    //		
    //		System.out.println(hello.class.getResource(""));
    //		file.transferTo(new File(hello.class.getResource("").toString().substring(6)+file.getOriginalFilename()));
    //		
    		
    	}
    

    多文件上传

    //多文件上传
    @PostMapping("/upload")
    	public void upload(HttpServletRequest request,
    			@RequestParam("file") MultipartFile[] file) throws IllegalStateException, IOException {
    		File file2=null;
    		for (MultipartFile multipartFile : file) {
    			String pathString=new String("src/main/resources/static/");
    			 file2=new File(pathString+multipartFile.getOriginalFilename());
    			
    			multipartFile.transferTo(file2.getAbsoluteFile());
    		}
    		
    

    form 表单enctype设置为"multipart/form-data“后request.getParameter将会无法使用

    <html>
    <head></head>
    <body>
    <!-- form 表单method="post"  enctype="multipart/form-data -->
    <form action="/upload" method="post" enctype="multipart/form-data">
    <input name="file" type="file">
    <input name="file" type="file">
    <input name="file" type="file">
    <input name="file" type="file">
    <input type="submit">
    </form>
    </body>
    </html>
    
    展开全文
  • SpringBoot常用注解: @SpringBootApplication @Configuration @RestController @Service @Respository @Component 与 @ComponentScan @Bean @Autowired 与 @Resource 与 @Qualifier @RequestMapping 与 @...

    SpringBoot常用注解:

    @SpringBootApplication

    @Configuration

    @RestController

    @Service

    @Respository

    @Component 与 @ComponentScan

    @Bean

    @Autowired 与 @Resource 与 @Qualifier

    @RequestMapping 与 @RequestParam 与 @ResponseBody


    SpringBoot项目结构

     

    展开全文
  • Springboot常用注解大全

    万次阅读 多人点赞 2018-06-30 14:42:45
    springboot注解:@Service: 注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一个数据访问层bean@Component: 注解在类上,表示通用bean ,...

    springboot注解:
    @Service: 注解在类上,表示这是一个业务层bean
    @Controller:注解在类上,表示这是一个控制层bean
    @Repository: 注解在类上,表示这是一个数据访问层bean
    @Component: 注解在类上,表示通用bean ,value不写默认就是类名首字母小写
    @Autowired:按类型注入.默认属性required= true;当不能确定 Spring 容器中一定拥有某个类的Bean 时, 可以在需要自动注入该类 Bean 的地方可以使用 @Autowired(required = false), 这等于告诉Spring:在找不到匹配Bean时也不抛出BeanCreationException 异常。@Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变byName 了。@Autowired可以对成员变量、方法以及构造函数进行注释,而 @Qualifier 的标注对象是成员变量、方法入参、构造函数入参。正是由于注释对象的不同,所以 Spring 不将 @Autowired 和 @Qualifier 统一成一个注释类。
    @Resource: 按名称装配

    区别:

    @Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bean匹配

    @Resource(importjavax.annotation.Resource;)是J2EE的注解,@Autowired(importorg.springframework.beans.factory.annotation.Autowired;)是Spring的注解
    @Configuration:注解在类上,表示这是一个IOC容器,相当于spring的配置文件,java配置的方式。 IOC容器的配置类一般与 @Bean 注解配合使用,用 @Configuration 注解类等价与 XML 中配置 beans,用@Bean 注解方法等价于 XML 中配置 bean。
    @Bean: 注解在方法上,声明当前方法返回一个Bean

    @Scope:注解在类上,描述spring容器如何创建Bean实例。

    (1)singleton: 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例

    (2)prototype:表示每次获得bean都会生成一个新的对象

    (3)request:表示在一次http请求内有效(只适用于web应用)

    (4)session:表示在一个用户会话内有效(只适用于web应用)

    (5)globalSession:表示在全局会话内有效(只适用于web应用)

    在多数情况,我们只会使用singleton和prototype两种scope,如果未指定scope属性,默认为singleton
    @Value:注解在变量上,从配置文件中读取。

    例如:@Value(value = “#{message}”)

    @ConfigurationProperties   赋值,将注解转换成对象。给对象赋值。车险项目:HttpClientSetting

    @Profile:注解在方法类上在不同情况下选择实例化不同的Bean特定环境下生效!!!!!!!!!!!!!!!!!

    @SpringBootApplication:@SpringBootApplication=@ComponentScan+@Configuration+@EnableAutoConfiguration:约定优于配置

    @EnableAutoConfiguration启用 Spring 应用程序上下文的自动配置,试图猜测和配置您可能需要的bean。自动配置类通常采用基于你的classpath 和已经定义的 beans 对象进行应用。被 @EnableAutoConfiguration 注解的类所在的包有特定的意义,并且作为默认配置使用。通常推荐将 @EnableAutoConfiguration 配置在 root 包下,这样所有的子包、类都可以被查找到。

    @ComponentScan:注解在类上,扫描标注了@Controller等注解的类,注册为bean 。@ComponentScan 为 @Configuration注解的类配置组件扫描指令。@ComponentScan 注解会自动扫描指定包下的全部标有 @Component注解的类,并注册成bean,当然包括 @Component下的子注解@Service、@Repository、@Controller。 

    @RestController @RestController 是一个结合了 @ResponseBody 和 @Controller 的注解

    @Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上@Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。

    @RequestBody

    @PathVariable

    @RequestParam

    两者的作用都是将request里的参数的值绑定到contorl里的方法参数里的,区别在于,URL写法不同。

    当请求参数username不存在时会有异常发生,可以通过设置属性required=false解决,例如:

    @RequestParam(value="username",required=false)

    使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值

    使用@PathVariable时,URL是这样的:http://host:port/path/参数值

    不写的时候也可以获取到参数值,但是必须名称对应。参数可以省略不写

    @RequestMapping  和请求报文是做对应的   
      a:value,指定请求的地址 
      b:method 请求方法类型 这个不写的话,自适应:get或者post
      c:consumes 请求的提交内容类型 
      d:produces 指定返回的内容类型 仅当request请求头中的(Accept)类型中包含该指定类型才返回
      e: params 指定request中必须包含某些参数值 
      f:headers 指定request中必须包含指定的header值

    g: name  指定映射的名称  

     @RequestMapping(method = RequestMethod.GET)

     @RequestMapping(method = RequestMethod.POST)

     @RequestMapping(method = RequestMethod.PUT)

     @RequestMapping(method = RequestMethod.DELETE)

     当然也可以使用

     @GetMapping

     @PostMapping

     @PutMapping

     @DeleteMapping 这与上面的是一样的效果

     

    @EnablCaching @EnableCaching注解是spring framework中的注解驱动的缓存管理功能。自spring版本3.1起加入了该注解。如果你使用了这个注解,那么你就不需要在XML文件中配置cache manager了。

    @suppresswarnings 抑制警告

    @Modifying 如果是增,改,删加上此注解

    1:方法的返回值应该是int,表示更新语句所影响的行数。

    2:在调用的地方必须加事务,没有事务不能正常执行。@Transactional  事务注解

    @Query 自定义查询语句 JPQL

    JPA注解

    @Entity

    @Table(name=“”):注解在类上表明这是一个实体类。一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略

    @Column:通过@Column注解设置,包含的设置如下 
    name:数据库表字段名 
    unique:是否唯一 
    nullable:是否可以为空 

    Length:长度
    inserttable:是否可以插入 
    updateable:是否可以更新 
    columnDefinition: 定义建表时创建此列的DDL 
    secondaryTable: 从表名。如果此列不建在主表上(默认建在主表),该属性定义该列所在从表的名字。 
    @Column(name = "user_code", nullable = false, length=32)//设置属性userCode对应的字段为user_code,长度为32,非空     
    private String userCode;     
    @Column(name = "user_wages", nullable = true, precision=12,scale=2)//设置属性wages对应的字段为user_wages,12位数字可保留两位小数,可以为空     
    private double wages;  

    @Id:表示该属性为主键。

    @Temporal(TemporalType.DATE)//设置为时间类型     
    private Date joinDate; 

    @Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式

    @JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。

    @JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。

    @OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。

    @GeneratedValue 用于标注主键的生成策略,通过 strategy 属性指定。默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer 对应 identity,MySQL 对应 auto increment。 在 javax.persistence.GenerationType 中定义了以下几种可供选择的策略:

    IDENTITY:采用数据库 ID自增长的方式来自增主键字段,Oracle 不支持这种方式;

    AUTO: JPA自动选择合适的策略,是默认选项;

    SEQUENCE:通过序列产生主键,通过 @SequenceGenerator 注解指定序列名,MySql 不支持这种方式

    TABLE:通过表产生主键,框架借由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植。

     

     


    展开全文
  • 常用springboot注解

    千次阅读 2017-04-21 16:47:26
    把最近项目中用到的注解拿出来解释了下,个人知识面有限,如有错误欢迎指正! 1.SpringBoot/spring@SpringBootApplication:包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上。@...
  • SpringBoot常用注解

    千次阅读 2019-04-25 11:03:14
    SpringBoot: controller层: 1、@Controller @Controller 用来响应页面,表示当前的类为控制器。 2、@RestController @RestController 是@ResponseBody和@Controller的结合 表明当前类是控制器且返回的是...
  • SpringBoot 常用注解

    2020-02-01 22:23:47
    SpringBoot在Controller层常用注解有以下几个: @Controller:处理HTTP请求 @RestController:处理AJAX请求 @PathVariable:路径变量注解,@RequestMapping中用{}来定义url部分的变量名,支持变量名加正则表达式...
  • Springboot 常用注解

    2019-11-15 14:57:35
    Springboot 常用注解 @SpringBootApplication: 包含@Configuration、@EnableAutoConfiguration、@ComponentScan 通常用在主类上。 @Repository: 用于标注数据访问组件,即DAO组件。 @Service: 用于标注业务...
  • springboot常用注解

    千次阅读 2019-01-28 10:00:40
    说起注解,就不得不说到三个最基本的注解: Target:声明注解用于什么地方,用的最多的是注解在类上(@Target({ElementType.TYPE}))和方法(@Target({ElementType.METHOD}))上。 Retention:定义该注解的生命...
  • Springboot常用注解

    2018-09-21 22:48:18
    springboot注解: @Service: 注解在类上,表示这是一个业务层bean @Controller: 注解在类上,表示这是一个控制层bean @Repository: 注解在类上,表示这是一个数据访问层bean @Component: 注解在类上,表示通用...

空空如也

1 2 3 4 5 ... 20
收藏数 17,826
精华内容 7,130
关键字:

常用注解