Spring-使用JavaConfig注解来实现配置

  在Spring开发中对于一些简单的bean,我们可以不使用XML文档直接注册bean。以达到简单方便的目的.

1.@Configuration

@Configuration:指示一个类声明一个或多个@Bean方法,可以由Spring容器处理。一般配合@Bean

在config包下建立类

public class UserConfig {
    @Bean //注册bean
    public User getUser(){
        return  new User();
    }

    @Bean//注册bean
    public OtherUser getOtherUser(){
        return new OtherUser();
    }
}

使用@Bean之后,其bean就已经注册于ioc容器中,其相当于XML文档中的

 <bean id="getUser" class="com.tang.pojo.User" />
 <bean id="getOtherUser" class="com.tang.pojo.OtherUser" />

在pojo包下建立两个类:

public class User {
    public String name;

    public String getName() {
        return name;
    }

    @Value("啦啦啦啦")
    public void setName(String name) {
        this.name = name;
    }

}

public class OtherUser {
    public String name;

    public String getName() {
        return name;
    }

    @Value("噜啦噜啦嘞")
        public void setName(String name) {
        this.name = name;
    }

}

测试:

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(UserConfig.class);
        User user = (User) context.getBean("getUser");
        OtherUser otherUser = (OtherUser) context.getBean("getOtherUser");
        System.out.println(user.getName());
        System.out.println(otherUser.getName());
    }
}

注:使用AnnotationConfigApplicationContext来注册其@Configuration注释的类和普通@Component类型

测试结果:
啦啦啦啦
噜啦噜啦嘞

2.@ComponentScan

@ComponentScan:来定义一个包扫描,在这些包中通过@Component在注册到 ico 容器中

在config包下建立类

@ComponentScan("com.tang.pojo")//写了这个包扫描就可以不用再去@bean或者显示的写User,因为其已经通过@Component注册到ico容器里
public class UserConfig {
}

在com.tang.pojo包下建立两个类:

@Component("user")
public class User {
    public String name;

    public String getName() {
        return name;
    }

    @Value("啦啦啦啦")
    public void setName(String name) {
        this.name = name;
    }

}

@Component("otheruser")
public class OtherUser {
    public String name;

    public String getName() {
        return name;
    }

    @Value("噜啦噜啦嘞")
        public void setName(String name) {
        this.name = name;
    }

}

测试:

public class MyTest {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(UserConfig.class);
        User user = (User) context.getBean("user");
        OtherUser otherUser = (OtherUser) context.getBean("otheruser");
        System.out.println(user.getName());
        System.out.println(otherUser.getName());
    }
}

注:这里getBean所拿到的名称一定与@Component(“名称”)相同,一般自定义

测试结果:
啦啦啦啦
噜啦噜啦嘞
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风儿吹吹吹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值