Springboot 注解详解

springboot是spring公司开发一套快速搭建javaWeb项目的框架,其最大的特点就是简便快捷,简化了Spring项目大量的配置文件,其核心思想就是约定大于配置,而注解这种简便快捷的方式自然成为不二选择,下面总结了springboot中一些常用的注解,以后也会持续更新加入新的注解,当然对于@Controller @RequestMapping 这种太过常见的就不再举例了。

(一)参数类

[email protected]    属性  value = "name",required = true/false  defaultValue = xxx

public void say(@RequestParam("name") String name,@RequestParam("pwd") String password){

}

[email protected]   与@RequestParam 类似   基于restful风格

@RequestMapping("/demo/{id}/{name}")
public void say(@PathVariable("id") String id,@PathVariable("name") String name1){

}

[email protected]   将前端表单中的name属性绑定到实体类的属性上,要求表单中的name名称和实体类的属性名称一致。

public void say(@RequestBody User user){

}

[email protected] 从请求中获取值、拦截器或@ModelAttribute中预存的属性值  默认值true,没有值时会抛异常ServletRequestBindingException,可将required属性设置成false.

(二).扫描类的注解

[email protected]   @Controller  @Service  @Repository这三个是@Component的子类,将扫描的包加入到IOC容器中,对于没有扫描到的包可用@ComponentScan扫描指定的包,定义在类上

[email protected]  告诉Spring这个方法产生一个类对其管理,产生一个实例Bean,@Bean相对于@Component更加的灵活

[email protected]   相当于spring的xml中的<beans>

[email protected]  则相当于xml中的<bean>

package com.dxz.demo.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

@Configuration
public class TestConfiguration {
    public TestConfiguration() {
        System.out.println("TestConfiguration容器启动初始化。。。");
    }

    // @Bean注解注册bean,同时可以指定初始化和销毁方法
    // @Bean(name="testBean",initMethod="start",destroyMethod="cleanUp")
    @Bean
    @Scope("prototype")
    public TestBean testBean() {
        return new TestBean();
    }
}

TestBean

package com.dxz.demo.configuration;

public class TestBean {

    private String username;
    private String url;
    private String password;

    public void sayHello() {
        System.out.println("TestBean sayHello...");
    }

    public String toString() {
        return "username:" + this.username + ",url:" + this.url + ",password:" + this.password;
    }

    public void start() {
        System.out.println("TestBean 初始化。。。");
    }

    public void cleanUp() {
        System.out.println("TestBean 销毁。。。");
    }
}

测试类

复制代码
package com.dxz.demo.configuration;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class TestMain {
    public static void main(String[] args) {

        // @Configuration注解的spring容器加载方式,用AnnotationConfigApplicationContext替换ClassPathXmlApplicationContext
        ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);

        // 如果加载spring-context.xml文件:
        // ApplicationContext context = new
        // ClassPathXmlApplicationContext("spring-context.xml");

         //获取bean
        TestBean tb = (TestBean) context.getBean("testBean");
        tb.sayHello();
    }
}

结果:

也可以在TestBean类上加@Componet配合@Configration使用

(三).资源引入类

1.  @Value

@Value("${book.name}")  获取application.properties(也可以是你的其他配置文件中)的book.name=old man and sea

@Value("#{name}")   获取book实体类的name属性

[email protected] 和@Autowired

都是作为Bean注入时使用,@Resource 是 java的注解,Spring也支持这一注解,有Name和Type属性,当都不指定时用name属性;@Autowired注解是Spring的注解默认是     ByType的

当一个类有多个实现时,@Resource(name="xxx") 或@Qualifier("woman") 而 @Autowired需要和@Primary 在实现类上(man 和woman实现people,需要在man或woman上实现)

[email protected]("classpath:xxxxx.xml")加载xml的配置文件

[email protected]

有时需要将配置文件中的信息封装成实体类,这样调用起来就会很方便,

配置文件:

connection.username=admin
connection.password=kyjufskifas2jsfs
connection.remoteAddress=192.168.1.1

实体类:

@Component
@ConfigurationProperties(prefix = "connection")
@Data    //lombok的注解  需要引入lombok的依赖  IDEA工具安装lombok  作用  自动生成get set 方法
public class ConnectionSettings {

    private String username;
    private String remoteAddress;
    private String password ;
}

使用时

@RestController
@RequestMapping("/task")
public class TaskController {

    @Autowired
    ConnectionSettings conn;

    @RequestMapping(value = {"/", ""})
    public String hellTask(){
        String userName = conn.getUsername();
        return "hello task !!";
    }

}

当然你也可以直接将@ConfigurationProperties 和@Bean  放一起使用  这样就不需要在ConnectionSettings类上加注解了

@Bean
    @ConfigurationProperties(prefix = "connection")
    public ConnectionSettings connectionSettings(){
        return new ConnectionSettings();
}

(四).事务类

[email protected]

原文地址:https://www.cnblogs.com/hs5201314tx/p/11595146.html

时间: 2024-07-31 06:31:52

Springboot 注解详解的相关文章

SpringBoot配置详解

SpringBoot配置详解 SpringBoot自动化配置 在上一节中我们使用Spring Boot实现了一个简单的RESTful API应用,在实现过程中,除了Maven的pom文件的一些配置,我们没有做任何其他的配置,这就是Spring Boot的自动化配置带来的好处,但是,我们还需要了解如何在Spring Boot中修改这些自动化配置的内容,以应对一些特殊的场景需求. 配置文件—Spring Boot支持YAML配置文件和properties配置文件 Spring Boot的默认配置文件

【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解

@RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言: 接上一篇文章,对@RequestMapping进行地址映射讲解之后,该篇主要讲解request 数据到handler method 参数数据的绑定所用到的注解和什么情形下使用: 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主

Spring中常用的配置和注解详解

一.  Spring中常用的配置文件详解 Spring中的配置文件详解 1.<!-- 配置注解bean的扫描路径 该配置表示从cn包下开始扫描--> <context:component-scan base-package="cn"></context:component-scan> 2.<!-- 加载资源文件 其中Location表示从哪个路径加载配置文件properties--> <context:property-placeh

Java——注解详解

Java注解同 classs 和 interface 一样,注解也属于一种类型.它是在 Java SE 5.0 版本中开始引入的概念. 注解的定义 通过 @interface 关键字进行定义. public @interface TestAnnotation { } 这段代码就创建了一个名字为 TestAnnotaion 的注解. 你可以简单理解为创建了一张名字为 TestAnnotation 的标签. 使用注解 @TestAnnotation public class Test { } 在类上

Java基础13:反射与注解详解

Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Oracle官方对反射的解释是 Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fi

springMVC的注解详解

springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@Request

【转】Spring注解详解

http://blog.csdn.net/xyh820/article/details/7303330/ 概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名.类型等信息,如果关系表字段和 PO 属性名.类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取. 注释和 Java 代码位于一个文件中,而

Spring @注解详解(转)

1.@controller 控制器(注入服务) 2.@service 服务(注入dao) 3.@repository dao(实现dao访问) 4.@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)   @Component,@Service,@Controller,@Repository注解的类,并把这些类纳入进spring容器中管理. 下面写这个是引入component的

Spring注解详解(转)

概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO 的属性名.类型等信息,如果关系表字段和 PO 属性名.类型都一致,您甚至无需编写任务属性映射信息——因为这些信息都可以通过 Java 反射机制获取. 注释和 Java 代码位于一个文件中,而 XML 配置采用独立的配置文件,大多数配置信息在程序开发完成后都不会调整,如果配置信息和 Java 代码放