SpringBoot学习笔记——SpringBoot注解

1. 默认扫描@SpringBootApplication

用springboot 的时候有一个默认的basepackage,在用springmvc时我们是在xml文件里用component scan去扫描包的,现在的默认的包是在启动类上面的包。
在spring官方的说明中是这样说的:

我们通常建议您将主应用程序类放在其他类之上的根包中。该@SpringBootApplication注解往往放在你的主类,它隐含地定义为某些项目一基地“搜索包”。例如,如果您正在编写JPA应用程序,@SpringBootApplication则使用带注释的类的包搜索@Entity项目。使用根软件包还允许组件扫描仅应用于您的项目。

意思就是说主启动类是要放在其他被扫描包的上层。而@SpringBootApplication注解基本上都是放在主类上。主启动类其实就相当于以前的Tomcat的启动了。

2. @Bean

这里是转载自一个博主的文章,我觉得写的很清晰明了:传送门

2.1 @Bean的含义

简单的来说,
1、Bean就是类的代理或代言人,凡是子类及带有方法或属性的类都要加上注解Bean到Spring IoC的注解,交给spring来管理。
2、@Bean 用在方法上面,告诉Spring容器,你可以从下面这个方法中拿到一个Bean。

2.2 @Bean的分类

1、一类是使用Bean,即是把已经在xml文件中配置好的Bean拿来用,完成属性、方法的组装;比如@Autowired , @Resource,可以通过byTYPE(@Autowired)、byNAME(@Resource)的方式获取Bean;

2、一类是注册Bean,@Component , @Repository , @ Controller , @Service , @Configration这些注解都是把你要实例化的对象转化成一个Bean,放在IoC容器中,等你要用的时候,它会和上面的@Autowired , @Resource配合到一起,把对象、属性、方法完美组装

2.3 Spring如何管理Bean

Spring帮助我们管理Bean分为两个部分:
一个是注册Bean,一个装配Bean。完成这两个动作有三种方式:
1、使用自动配置的方式、2、使用JavaConfig的方式(spring3.0之后),3、使用XML配置的方式(spring3.0之前)。

  • 自动配置方式:
    使用@Component去告诉Spring,我是一个bean,你要来管理我,然后使用@AutoWired注解去装配Bean(所谓装配,就是管理对象直接的协作关系)。
  • JavaConfig:
    @Configuration其实就是告诉spring,spring容器要怎么配置(怎么去注册bean,怎么去处理bean之间的关系(装配))。那么就很好理解了,@Bean的意思就是,我要获取这个bean的时候,你spring要按照这种方式去帮我获取到这个bean。
  • xml方式:
    也是如此。标签就是告诉spring怎么获取这个bean,各种就是手动的配置bean之间的关系。

3. @Repository , @ Service , @Controller ,@Component

这几个注解都是将各层(控制层、业务层、数据访问层)的类标识为 Spring Bean,在类上标注这些注解,Spring会自动创建相应的 BeanDefinition 对象,并注册到 ApplicationContext 中。这些类都会被纳入spring容器中 进行管理。
区别:

  1. @repository(实现dao访问)
    用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件。

  2. @service(业务层注入dao)
    用于标注业务层,主要用来进行业务的逻辑处理

  3. @Controller (控制层注入服务)
    用于标注控制层,相当于struts中的action层

  4. @Component
    @Component 是一个泛化的概念,仅仅表示一个组件 (Bean) ,可以作用在任何层(控制层、业务层等)。
    当然类在不属于各种归类的时候,我们就可以使用@Component来标注这个类。

如何引入?

在原来spring中我们可以在xml下导入语句:

<context:component-scan base-package="org.example">

在springboot中,引入@ComponentScan注解,如:

@Configuration
@ComponentScan(basePackages = "org.example") //basePackages 可省略
public class AppConfig  {
     
    // ...
}

另外强调一点:

  • 如果你的其他包都在使用了@SpringBootApplication注解的启动类所在的包及其下级包,则你什么都不用做,SpringBoot会自动帮你把其他包都扫描了,就不需要再加@ComponentScan注解了
  • 如果你有一些bean所在的包,不在启动类的包及其下级包,那么你需要手动加上@ComponentScan注解并指定那个bean所在的包

3. @Configuration

@Configuration注解相当于spring的配置文件xml里面的标签,主要用于@Bean的配置,放在类上面。举个简单的例子:

@Configuration
public class AppConfig {
     

    @Bean
    public MyService myService() {
     
        return new MyServiceImpl();
    }
}

4.@Import

在应用中,有时没有把某个类注入到IOC容器中,但在运用的时候需要获取该类对应的bean;或者在启动类中想要获取其他类的bean,此时就需要用到@Import注解。
换句话说,通过@Import注解,我们可以将指定的类实例注入之Spring IOC 容器中。

这里转载自一篇博文:传送门

简要概述,SpringBoot 提供了 三种使用 @Import 将 类实例注入至 Spring IOC 容器中 的实例:

  1. 直接注入
  2. 实现 ImportBeanDefinitionRegistrar 接口 注入
  3. 实现 ImportSelector 注入

那么关于springboot主要的注解就先记到这里,有更多的注解后面再进行补充。

你可能感兴趣的:(笔记,spring,java,spring,boot,bean)