一。@SpringBootApplication
该注解的作用:@SpringBootApplication是@Configuration,EnableAutoConfiguration,@ComponentScan的组合。SpringBoot 提供了统一的注解来替代以上三个注解,简化程序的配置。
二。@Configuration
springboot官方文档
@Configuration is a class-level annotation indicating that an object is a source of bean definitions.
@Configuration classes declare beans via public @Bean annotated
methods. Calls to @Bean methods on @Configuration classes can also be
used to define inter-bean dependencies.
@Configuration 是一个类级注释,指示对象是一个bean定义的源。@Configuration 类通过 @bean 注解的公共方法声明bean。
@Bean 注释是用来表示一个方法实例化,配置和初始化是由 Spring IoC 容器管理的一个新的对象。
通俗的讲 @Configuration 一般与 @Bean 注解配合使用,用 @Configuration 注解类等价与 XML 中配置 beans,用 @Bean 注解方法等价于 XML 中配置 bean。
举个栗子:
<beans>
<bean id = "UserService" class="com.user.Userservice">
<property name="userDAO" ref = "userDAO"></property>
</bean>
<bean id = "userDAO" class="com.user.UserDAO"></bean>
</beans>
java代码:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Config {
@Bean
public UserService getUserService(){
UserService userService = new UserService();
userService.setUserDAO(null);
return userService;
}
@Bean
public UserDAO getUserDAO(){
return new UserDAO();
}
}
public class UserService {
private UserDAO userDAO;
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
public class UserDAO {
}
该注解的作用: 使用 public 修饰 @Bean 注解的方法;UserService、UserDAO 类无需声明为 > @Component、@Service、@Repository、@Controller;
三。@RestController
该注解的作用:这个注解是@response 和@Controller的结合
四。@ConfigurationProperties(一个注解,批量注解)
该注解的作用:告诉springboot将配置文件与类中的字段进行绑定,默认从全局配置中获取值,但是当指定了@PropertySource时,会从指定的配置文件中加载数据。
五。@value(单个注解,一个一个的去做,正好和四相对)
该注解的作用:
<bean>
<property name="xxx" value=""/>这里的value可以注入字面值,可以通过${key}从环境变量,配置文件中,也可以通过#{spel}表达式注入
</bean>
那我们的@value注解就是加在bean字段上的注解,也可以通过上述三种方式注入值。
六。@validated
该注解的作用:开启jsr303校验,@ConfigurationProperties(prefix = “”)支持数jsr303校验 ,但是@value不支持
七 @ImportResource(value = {“classpath:xxx.xml”})
该注解的作用:就相当于让springboot知道这是一个spring的配置文件。这样就可以识别配置文件中的bean。
但是现在springboot不推荐编写spring的配置文件了。而是是编写spring的配置类
springboot推荐使用全注解的方式
spring配置类(@Configuration)=========xxx.xml配置文件
八。@Configuration
该注解的作用:使用该注解标注的类,便是换一个配置类,也就相当于配置文件。在这里面的方法上有@Bean,就可以为容器中添加组件了,但前提是这个自动配置类是满足@Conditional指定的条件。
***springboot把之前的xml文件的配置方式,现在都变为注解的方式,@Value @Bean@Configuration就是很好的证明。***
九。@EnableConfigurationProperties(xxx.java)
该注解的作用:启动指定类的@ConfigurationProperties注解功能,使得指定类可以和相应的properties文件的数据与字段进行绑定,最终将该绑定好的类加入到springboot容器里面。
十。@Conditional
该注解的作用:根据不同的条件,如果满足指定的条件,真个配置类里面的配置就会生效。
例如: