基于Java方式配置Spring

一. 问题背景

在面试题中“Spring是什么”中说到“Spring的3种配置方式有:基于xml方式;基于注解方式;基于Java配置”,笔者不懂基于Java配置,所以今天了解一下。

此笔记仅供自己参考,如有错误请指正

参考:Spring的Java配置方式

二. 基于Java方式配置Spring

2.1 @Configuration 和 @Bean

@Configuration:该注释标注在一个类上面,则表明该类是一个配置类,其作用相当于spring中配置Bean的xml文件,其含义是该类是Spring IOC容器的Bean的来源。

@Bean:该注释标注在一个方法上面,则其作用相当于<bean>标签。是用来配置一个bean的。该方法的返回值是<bean>标签的class属性,<bean>的id属性默认是方法名。

例子:

package cn.qlq;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration // 通过该注解来表明该类是一个Spring的配置,相当于一个xml文件
@ComponentScan(basePackages = "cn.qlq") // 配置扫描包
public class SpringConfig {

    @Bean // 通过该注解来表明是一个Bean对象,相当于xml中的<bean>
    public UserDao getUserDAO() {
        return new UserDao(); // 直接new对象做演示
    }

}
public class Test {

    public static void main(String[] args) {
        // 通过Java配置来实例化Spring容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);

        // 在Spring容器中获取Bean对象
        UserService userService = context.getBean(UserService.class);

        // 调用对象中的方法
        List<User> list = userService.queryUserList();
        for (User user : list) {
            System.out.println(user.getUsername() + ", " + user.getPassword() + ", " + user.getPassword());
        }

        // 销毁该容器
        context.destroy();
    }

}

例子:

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

相当于xml文件中的

<beans>    
    <bean id="myService" class="com.somnus.services.MyServiceImpl"/>    
</beans> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值