Spring-IOC 三種配置介紹

前言

Spring配置主要分為XML、@注解、JavaConfig三種

一、XML配置(不推薦,過(guò)于臃腫、維護(hù)困難)

<bean id="serverLogger" class="com.springnovel.perfectlogger.CosoleLogger"/>

二、@Component 注解形式配置

1)聲明組件類
@Component
public class BaseDao implements IBaseDao{

}
@Mapper
public class UserMapper implements BaseMapper {

}
......
2)@ComponentScan自動(dòng)裝配掃描
## 非SpringBoot項(xiàng)目
@ComponentScan("com.demo")##指定掃描某個(gè)包下面的bean
@Configuration
public class SpringConfiguration{

}
## SpringBoot項(xiàng)目 
/**
*1、如果你的其他包都在使用了@SpringBootApplication注解的main所在的包及其下級(jí)包,則你什么都不用做,SpringBoot會(huì)自動(dòng)幫你把其他包都掃描了。
*2、如果你有一些bean所在的包,不在main的包及其下級(jí)包,那么你需要手動(dòng)加上@ComponentScan注解并指定那個(gè)bean所在的包
*/
@ComponentScan(“com.demo”)
@SpringBootApplication
public class SpringbootApplication {
}
3)把掃描到的Bean用@Autowired進(jìn)行 注入
@Servier
public class UserServiceImpl implements UserService{
  @Autowired
  public UserMapper userMapper;
}

三、JavaConfig(配置類)代碼注入

配置類的方式靈活度更高,通過(guò)@Configuration和@Bean方式進(jìn)行裝配
例如:RabbitMq通過(guò)配置類的方式實(shí)例隊(duì)列

@Configuration
public class RabbitConfig {
/**
     * 題庫(kù)交換機(jī)
     */
    public static final String TK_MQ_EXCHANGE="TK-MQ-EXCHANGE";
    /**
     * 隊(duì)列和KEY
     */
    public static final String LOG_KEY="LOG-KEY";
    public static final String LOG_QUEUE="LOG-QUEUE";

    /**
     * description: directExchange 創(chuàng)建交換機(jī)實(shí)例并返回
     * version: 1.0
     * date: 2020/12/19 18:01
     * author: PengBoJia
     * @param
     * @return org.springframework.amqp.core.DirectExchange
     */
    @Bean
    public DirectExchange directExchange(){
        return new DirectExchange(TK_MQ_EXCHANGE);
    }
   /**
     * description: LogQueue 實(shí)例Log隊(duì)列
     * version: 1.0
     * date: 2020/12/19 18:07
     * author: PengBoJia
     * @param
     * @return org.springframework.amqp.core.Queue
     */
    @Bean
    public Queue questionPageLogQueue(){
        return new Queue(LOG_QUEUE,true);
    }
    /**
     * description: LogBinding 交換機(jī)/隊(duì)列/key 綁定
     * version: 1.0
     * date: 2020/12/19 18:07
     * author: PengBoJia
     * @param
     * @return org.springframework.amqp.core.Binding
     */
    @Bean
    public Binding LogBinding(){
        return BindingBuilder.bind(LogQueue()).to(directExchange()).with(LOG_KEY);
    }
}

總結(jié):
1.xml配置: 相對(duì)于其他兩種方式來(lái)說(shuō),幾乎沒(méi)什么優(yōu)勢(shì),
2.注解: 用起來(lái)非常地簡(jiǎn)潔,代碼量十分少,因此是項(xiàng)目的第一選擇;
3.Java Config: 只有當(dāng)需要注入代碼不是自己維護(hù)的第三方j(luò)ar包中的類時(shí),或者需要更為靈活地注入,比如說(shuō)需要調(diào)用某個(gè)接口,查詢數(shù)據(jù),然后把這個(gè)數(shù)據(jù)賦值給要注入的對(duì)象,那么這時(shí)候就需要用到

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容