Spring

Spring配置Bean的方式有两种,第一种是配置xml文件,第二种是基于java注解的配置方式

基于XML配置bean

1、参数通过构造函数配置


            //说明构造函数第一个参数是个基本类型
      //说明构造函数第二个参数是个对象,引用类型

2、参数通过setter方法配置

相当于先调用无参构造函数,然后调用setter方法配置属性


                   //调用setAge给age属性赋值
     //要先将Saxophone声明为一个bean此处才能调用

内部bean

如果不想让bean与其他bean共享可以使用内部bean


    
    
          //内部bean,对外不可见。property也可以替换成construcor-arg元素
    

bean可以在初始化和销毁时调用某些方法

  //销毁时调用turnOffLights方法

基于注解配置bean

可以让spring自动扫描指定的包,根据注解查找出能自动注册为spring的类。


该配置会自动扫描com.meituan.rc.prophet的包,并查找使用如下注解标注的类

  • @Component 通用的构造型注解,标识该类为Spring组件
  • @Controller 标识该类定义为SpringMVC controller
  • @Repository 标识该类定义为数据仓库
  • @Service 标识该类定义为服务
    示例:
@Service("guitar") //声明bean的id为guitar
puclic class Instrument{
    ...
}

Instrument将会被自动注册为一个id为guitar的bean

基于java的配置

还可以使用@Bean将方法的返回对象注册为bean,示例

@Bean
public Performer duke(){
    return new Juggler();
}

将返回的Juggler对象注册为bean,方法名作为bean的id

基于注解装配

Spring默认禁用注解装配,需要加入如下代码进行启动


可以使用@Autowired直接标注属性,这样spring就是自动寻找同类型(Instrument)的bean进行装配。
@Autowired 也可以用于装配方法(写在方法前一行)或者构造器

//装配属性
@Autowired
private Instrument instrument
  
//装配方法参数
@Autowired
public void myInstrument(Instrument instrument){
}

如果spring中有多个同类型的bean则可以使用@Qualifier注解来明确指定id为xxx的bean进行装配

@Autowired
@Qualifier("guitar")
private Instrument instrument

可以理解为@Qualifier注解将ByType类型自动装配转换成了ByName

你可能感兴趣的:(Spring)