核心注解(annotations)列表
@SpringBootApplication
:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文@Configuration
其实相当于传统的spring xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件@EnableAutoConfiguration
允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean@SpringBootConfiguration
这个注解就是 @Configuration 注解的变体,只是用来修饰是 Spring Boot 配置而已,或者可利于 Spring Boot 后续的扩展@ConfigurationProperties
可使用注解的方式将自定义的properties文件映射到实体bean中,比如config.properties文件或者其它的文件@EnableConfigurationProperties
注解的beans将自动被Environment属性配置@ComponentScan
组件扫描,可自动发现和装配一些Bean@Component
把普通pojo实例化到spring容器中,注解过后可以用于@ComponentScan自动装配@Controller
注解用于定义控制器类,在原先的spring mvc项目中由控制器负责将用户发来的URL请求转发到对应的服务接口@ResponseBody
注解的作用是需要配置@RequestMapping使用,是表示将方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,返回支持字符串,JSON数据、XML数据等格式@RequestMapping
注解作用是把URL映射到控制器类,简单点的理解就是标注出URL请求的路径,同时RequestMapping有的方法有Post、Delete、Put、Get等@RestController
注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器@Autowired
自动导入,对类成员变量、方法及构造函数进行标注,完成自动装配@PathVariable
获取参数@JsonBackReference
解决嵌套外链问题@RepositoryRestResourcepublic
配合spring-boot-starter-data-rest使用。@Import
通过导入的方式实现把实例加入springIOC容器中。可以在需要时将没有被Spring容器管理的类导入至Spring容器中@ImportResource
和@Import类似,区别就是@ImportResource导入的是配置文件@AutoConfigureAfter
用在自动配置类上面,表示该自动配置类需要在另外指定的自动配置类配置完之后@AutoConfigureBefore
表示该自动配置类需要在另外指定的自动配置类配置之前
注解(annotations)详解
@SpringBootApplication
程序运行的 main 方法通过调用 run 来委托 Spring Boot 的 SpringApplication 类,SpringApplication 类将引导我们的应用,启动 Spring,然后启动自动配置的 Tomcat web 服务器,免取了tomcat部署的环节。
示例代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Configuration
注解使用其实就是相当于传统的spring xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件
@ConfigurationProperties(prefix="demo")
public class MyProperties {
@NotNull
private String path;
}
@EnableAutoConfiguration
注解使用就允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean
先在项目资源根目录下存放了一个"META-INF/spring.factories"的文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.bitter.api.CustomAutoConfiguration
然后写CustomAutoConfiguration 实例类代码
@Configuration
public class CustomAutoConfiguration {
@Bean
public DemoApi apiStudent() {
DemoApi demoApi = new DemoApi();
demoApi .setName("auto-config");
return demoApi;
}
}
可以在其它类中进行引用
@Resource
private DemoApi demoApi;
@GetMapping("/getdemoapi")
@ResponseBody
public String autoConfig() {
return demoApi.getName();
}
@ConfigurationProperties
注解使用方式将自定义的properties文件映射到实体bean中,比如config.properties文件或者其它的文件
config.properties的配置文件
myapp.title=hello world
@ConfigurationProperties(prefix="myapp")
public class Myapp{
private String title;//自动装配值为hello world
//get set省
}
@EnableConfigurationProperties
注解用于把beans将自动被Environment属性配置
@Configuration
@EnableConfigurationProperties(HelloServiceProperties.class)
public class HelloServiceAutoConfiguration {
}
再进行调用
@RestController
public class ConfigurationPropertiesController {
@Autowired
private HelloServiceProperties helloServiceProperties;
@RequestMapping("/getTitle")
public String getObjectProperties () {
System.out.println(helloServiceProperties.getTitle());
return helloServiceProperties.getTitle();
}
}
@ComponentScan
注解在类上面,通过该注解用于定义组件扫描包路径或者类,为空表示列表扫描,扫描后自动发现和装配Bean,不过也需要在类上面定义@Service或者@Component 才会被扫描到,空注解的类不会被默认装配。
示例代码
@SpringBootApplication
@ComponentScan(basePackageClasses = Person.class) //只扫描Person类
@ComponentScan(value = "com.bitter") //扫描com.bitter下面所有的名
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
@Component
把普通pojo实例化到spring容器中,注解过后可以用于@ComponentScan自动装配
@Component
public class Person{
//
}
@Controller
注解用于定义控制器类,在原先的spring mvc项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),注解过后表示该类需由DispatcherServlet 分发的请求,使用时通常需要配合注解@RequestMapping。
示例代码
@Controller
@RequestMapping("/a") //请求的路径前缀(可选)
public class MyController {
@RequestMapping("/hello") //请求的路径
public ModelAndView hello(Map<String,Object> map){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("hello");//返回的页面,可以是.html、.flt、.jsp等后缀
return modelAndView;
}
}
@RestController
注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。请求基本上都是直接返回数据,不会直接到view层
示例代码
@RestController
@RequestMapping("/a") //请求的路径前缀(可选)
public class MyController {
@RequestMapping("/hello") //请求的路径
@ResponseBody
public String hello(Map<String,Object> map){
return "返回的是具体数据.一般用于ajax请求使用";
}
}
@ResponseBody
注解的作用是需要配置@RequestMapping使用,是表示将方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,返回支持字符串,JSON数据、XML数据等格式,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据
示例代码
@RestController
@RequestMapping("/a") //请求的路径前缀(可选)
public class MyController {
@RequestMapping("/hello") //请求的路径
@ResponseBody
public String hello(Map<String,Object> map){
return "返回的String格式的数据,同时也支持返回json数据对象";
}
}
@RequestMapping
注解作用是把URL映射到控制器类,简单点的理解就是标注出URL请求的路径,同时RequestMapping有的方法有Post、Delete、Put、Get等
@RestController
@RequestMapping("/a") //请求的路径前缀(可选)
public class MyController {
@RequestMapping("/hello",method = RequestMethod.GET) //支持get请求,不支持其它的请求方式,如method不写,请求所有的请求都支持
@ResponseBody
public String hello(Map<String,Object> map){
return "返回的String格式的数据,同时也支持返回json数据对象";
}
}
@Autowired
注解的作用是对类自动导入,对类成员变量、方法及构造函数进行标注,完成自动装配
@RestController
@RequestMapping("/a") //请求的路径前缀(可选)
public class MyController {
@Autowired
private PersonService personService ;
@RequestMapping("/hello",method = RequestMethod.GET) //支持get请求,不支持其它的请求方式,如method不写,请求所有的请求都支持
@ResponseBody
public String hello(Map<String,Object> map){
String name = personService.getName();
return "返回的String格式的数据,同时也支持返回json数据对象";
}
}