Spring常用注解

1、@Configuration -----------告诉spring这是一个配置类-----类注解

2、@Bean-----------给容器中注册一个bean

@Bean

bean的id默认为方法名

@Bean(initMethod="init",destroyMethod="destroy")

bean创建销毁指定调用函数----数据源配置就可以用这个配置

bean创建

*单实例:在容器启动的时候创建对象

* 多实例:在每次获取的时候创建对象

bean销毁:

* 单实例:容器关闭的时候

* 多实例:容器不会管理这个bean;容器不会调用销毁方法;

3、@Scope(value="prototype") ----------作用域设置

* prototype

多实例(ioc容器启动不会创建实例,每次获取每次都会创建实例)

* singleton

单实例(默认值,ioc容器一启动就会创建实例,以后每次拿就是从容器中直接获取)

* request

同一次请求创建一个实例

*session

同一个session创建一个实例

4、@ComponentScan----------自动扫描

@ComponentScan(value="com.montnets")  

 value:指定要扫描的包

@ComponentScan(value="com.montnets",excludeFilters= {

          @Filter(type=FilterType.ANNOTATION)}

          )  

excludeFilters:指定不扫描

includeFilters:只扫描指定的(@ComponentScan要禁用默认扫描所有useDefaultFilters=false)

useDefaultFilters=false:   关闭默认扫描所有包

<!--自动包扫描 那么只要配置了@controller @service  @repository @component  就会自动加载到容器中 -->

     <context:component-scan  base-package="com.montnets"></context:component-scan>

配置文件配置---自动扫描包

5、@ComponentScans  ------------放多个@ComponentScan

@ComponentScans(

          @ComponentScan(value="com.montnets",includeFilters= {

                   @Filter(type=FilterType.ANNOTATION,classes=  {Controller.class})},

                   useDefaultFilters=false)  

          )

只有@controller的

6、@Filter(type=FilterType.ANNOTATION,classes=Controller.class)----------指定排除规则   

type=FilterType.ANNOTATION,classes={Controller.class}

过滤注解类型    所有标有@controlle注解的

type=FilterType.ASSIGNABLE_TYPE,classes=  {BookService.class}

过滤类类型       BookService类

type=FilterType.ASPECTJ

ASPECTJ表达式

type=FilterType.REGEX

过正则表达式

type=FilterType.CUSTOM,classes= {MyTypeFilter.class}

自定义过滤:

写个实现TypeFilter接口的实现类

 

@Filter使用实例参考:https://blog.csdn.net/qq_39769369/article/details/84977211

7、@Controller-----controller类标识注解  ---不给值默认是类名首字母小写

8、@Service-----service类标识注解

9、@Repository  ---DAO类表示注解

10、@Lazy ------懒加载

1、针对单实例bean:默认Scope为singleton 

 2、容器启动不创建对象,第一次使用(获取)创建bean实例,并初始化

11、@Conditional({WindowsCondition.class})-----按条件注册bean

@Conditional

放在类上,满足条件这个配置类中所有bean注册才能生效

@Conditional

放在方法上,满足条件方法中注册的bean才生效

WindowsCondition

实现Condition接口

@Conditional使用实例参考:https://blog.csdn.net/qq_39769369/article/details/84977211

12、@Import -----快速导入组件 

第一种用法

@Import(Color.class)------导入单个组件

@Import({Color.class,Red.class})-----导入多个组件

 bean的id默认是该类的全类名

第二种用法

@Import({MyImportSelector.class})

@Import({Color.class,Red.class,MyImportSelector.class})

MyImportSelector实现ImportSelector接口

第三种用法

@Import({MyImportBeanDefinitionRegistrar.class})

@Import({Red.class,MyImportSelector.class,MyImportBeanDefinitionRegistrar.class})

MyImportBeanDefinitionRegistrar实现ImportBeanDefinitionRegistrar接口

13、@Value------赋值

@Value("张三")

基本数值

@Value("#{25-5}")

可以写SpEL; #{}

@Value("${person.phone}")

可以写${};取出配置文件【properties】中的值(最终保存在运行环境变量里面的值)

properties配置文件要被读取

14、@PropertySource----------读取外部配置文件

@PropertySource(value= {"classpath:person.properties"})

使用${key}拿到对应的value值

15、@Autowired-------自动注入

默认优先按照类型去容器中找对应的组件

applicationContext.getBean(BookDao.class)

如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找

applicationContext.getBean("bookDao")

@Autowired(required=false)

自动装配配置为非必须,没找到也不会报错

@Autowired标注在方法上:

  • spring创建Boss对象会调用该方法完成赋;

  • 方法使用的参数,自定义类型的值从容器中去拿;

  • 默认不写@Autowired效果是一样的,能自动装配

@Autowired标注在构造器上:

  • 如果组件只有一个有参构造器,这个有参构造器的@Autowired可以省略

@Autowired标注参数位置:

  • 参数位置的组件还是可以自动从容器中获取,@Autowired可以省略

@Autowired使用实例参考:https://blog.csdn.net/qq_39769369/article/details/84977211

 

学习中不定时更新

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值