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);

}

 

 

 

posted @ 2021-07-14 10:58  阿丹biu  阅读(29)  评论(0编辑  收藏  举报