springboot
@RestController
@RestController是@ResponseBody和@Controller的组合注解。主要是为了使 http 请求返回 json 或者xml格式数据,一般情况下都是使用这个注解。
@RequestMapping 注解
要配置 Web 请求的映射,就需要用上 @RequestMapping 注解。@RequestMapping 注解可以在控制器类的级别和/或其中的方法的级别上使用。在类级别上的注解会将一个特定请求或者请求模式映射到一个控制器之上,之后还可以添加方法级别的注解来进一步绑定与具体处理方法的映射关系。类上的 “请求地址”是方法上的“请求地址”的父地址。
params属性:用于定义请求的 URL 中必须包含的参数,或者不包含某些参数。
method属性:属性类型包括GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE和TRACE等八种。可以为多个方法映射相同的URI,Spring MVC 根据请求的 method 类型识别这些方法。若是没指定method,则它可以处理method任何类型的请求,此时它的映射范围是最大的。指定 method 是为了细化映射,缩小处理方法的映射范围。
headers属性: 用 myHeader = myValue 这样的格式指定 header 元素的值。
consumes属性和produces属性: 用来限定请求的媒体类型,二者用法类似。
@EnableAutoConfiguration 注解
一是收集所有spring.factories中EnableAutoConfiguration相关bean的类,初始化为一个相关的bean;
二是将得到的类注册到spring容器中,启动自动化配置。
什么是自动配置?
自动配置是SpringBoot的一个特性,可以根据classpath中的jar依赖,自动注册bean;
使用自动装配
开启自动装配,@EnableAutoConfiguration;
添加相应的starter pom;
starter pom作用
引入可能依赖的jar包(pom文件);
注册相应的bean(spring.factories文件);
main 方法
应用的最后一部分是 main
方法。这只是一个标准方法,其遵循 Java 规范中定义的应用程序入口点。我们的 main 方法通过调用 run
来委托 Spring Boot 的 SpringApplication
类,SpringApplication
类将引导我们的应用,启动 Spring,然后启动自动配置的 Tomcat web 服务器。我们需要将 Example.class
作为一个参数传递给 run
方法来告知 SpringApplication
,它是 Spring 主组件。同时还传递 args
数组以暴露所有命令行参数。
@configure 注解
标注在类上,配置spring容器(应用上下文)。
相当于把该类作为spring的xml配置文件中的<beans>
。@Configuration注解的类中,使用@Bean注解标注的方法,返回的类型都会直接注册为bean。
spring bean构建和依赖注入的方式
bean构建的4种方法:
1、基于className
<bean class="com.warybee.spring.HelloSpring"></bean>
2、基于构造方法
<bean class="com.warybee.spring.HelloSpring" id="helloSpring"> <constructor-arg name="name" value="123"/> </bean>
3、静态工厂方法
<bean class="com.warybee.spring.HelloSpring" factory-method="build"></bean>
public class HelloSpring {
private String name;
public HelloSpring() {
}
public HelloSpring(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static HelloSpring build(){
return new HelloSpring();
}
}
4、FactoryBean
<bean class="com.warybee.spring.DriverFactoryBean" id="driver">
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
</bean>
public class DriverFactoryBean implements FactoryBean {
public String getJdbcUrl() {
return jdbcUrl;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
private String jdbcUrl;
@Override
public Object getObject() throws Exception {
Driver driver = DriverManager.getDriver(jdbcUrl);
return driver;
}
@Override
public Class<?> getObjectType() {
return Driver.class;
}
@Override
public boolean isSingleton() {
return true;
}
}
spring中依赖注入的几种方式
1、set方法注入
<bean class="com.warybee.spring.Order">
<property name="user" ref="user"/>
</bean>
<bean class="com.warybee.spring.User" id="user"></bean>
2、构造方法注入
<bean class="com.warybee.spring.Order">
<constructor-arg name="user">
<bean class="com.warybee.spring.User"></bean>
</constructor-arg>
</bean>
3、自动注入
<bean class="com.warybee.spring.Order" autowire="byName"></bean> <bean class="com.warybee.spring.User" id="user"></bean>
byName :基于变量名与bean名称相同作为依据插入
byType:基于变量类别与bean名称相同作为依据插入
constructor :基于IOC中bean与构造方法进行匹配
@ComponentScan注解:
用于类或接口上主要是指定扫描路径,spring会把指定路径下带有指定注解的类自动装配到bean容器里。会被自动装配的注解包括@Controller、@Service、@Component、@Repository等等。
常用属性如下:
basePackages、value:指定扫描路径,如果为空则以@ComponentScan注解的类所在的包为基本的扫描路径
basePackageClasses:指定具体扫描的类
includeFilters:指定满足Filter条件的类
excludeFilters:指定排除Filter条件的类
includeFilters和excludeFilters 的FilterType可选:ANNOTATION=注解类型 默认、ASSIGNABLE_TYPE(指定固定类)、ASPECTJ(ASPECTJ类型)、REGEX(正则表达式)、CUSTOM(自定义类型),自定义的Filter需要实现TypeFilter接口
@SpringBootApplication包含的三个注解及其含义
第一个:@SpringBootConfiguration(在这个类的源码中又有一个Configuration的注解)
@Configuration这个注解的作用就是声明当前类是一个配置类,然后Spring会自动扫描到添加了@Configuration的类,读取其中的配置信息,而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。
第二个:@EnableAutoConfiguration
开启自动配置,告诉SpringBoot基于所添加的依赖,去“猜测”你想要如何配置Spring。比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcat、SpringMVC的依赖,此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!我们使用SpringBoot构建一个项目,只需要引入所需框架的依赖,配置就可以交给SpringBoot处理了。
第三个:@ComponentScan
配置组件扫描的指令
提供了类似与<context:component-scan>标签的作用
通过basePackageClasses或者basePackages属性来指定要扫描的包。
如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包
而我们的@SpringBootApplication注解声明的类就是main函数所在的启动类,
因此扫描的包是该类所在包及其子包。因此,一般启动类会放在一个比较前的包目录中。
SpringApplication
类提供了一种可通过运行 main()
方法来启动 Spring 应用的简单方式。多数情况下,您只需要委托给静态的 SpringApplication.run
方法:
public static void main(String[] args) {
SpringApplication.run(MySpringConfiguration.class, args);
}
原文地址:https://www.cnblogs.com/huangdanlei/p/15009859.html
- CentOS 6.8 部署zookeeper集群
- ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator
- 使用容器进行应用程序路由
- MVVM(Knockout.js)的新尝试:多个Page,一个ViewModel
- ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProviders
- 我所理解的RESTful Web API [设计篇]
- 黑箱难题阻碍了深度学习的普及与发展
- iOS 转场动画探究(一)
- XCode中如何使用事务
- 如何部署编译NDIS驱动的环境(内部资料)
- 深度学习的入门级装机配置推荐
- Self Host模式下的ASP. NET Web API是如何进行请求的监听与处理的?
- GridView绑定小技
- XCode读取Excel数据(适用于任何数据库)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- centos内核的删除或修改
- chkconfig学习笔记
- 3分钟短文:说说Laravel通用缓存Cache的使用技巧
- 【技术创作101训练营】想用代码改变世界?先用好Git和Github!
- 绘制散点图(克利夫兰系列)
- 绘制分组散点图(克里夫兰点图)
- ggplot2绘制玫瑰图
- 绘制极坐标系条形图
- 四步重新认识冗余机器人的控制器设计
- 人脸识别接入常见问题汇总
- TKE上关于postStart 和preStop使用
- 文字识别接入常见问题
- 从 1 到 0 构建博客项目(2) -- 操作系统篇(2)--定制Centos
- 使用Angular依赖注入自定义SAP Spartacus的ProductAdapter
- 获取SAP Spartacus当前显示产品json数据的又一办法