记录:spring接口ApplicationContextAware

项目里看到有人写了个这个,自己回来照猫画虎写了一个垃圾例子:

实现ApplicationContextAware接口的类:

@Component
public class SpringUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    public static <T> T getBean(String name){
        return (T)applicationContext.getBean(name);
    }
}

添加component注解,在启动之后spring框架如果发现有实现ApplicationContextAware接口的类,会自动调用setApplicationContext方法将上下文赋值到类中,使用自己定义的getBean方法就可以获得需要的bean了。

一个小应用:

@ApiOperation(value="根据id查询商品" , notes = "查询商品")
    @ApiImplicitParams({@ApiImplicitParam(name = "id" , value = "商品id"
            , dataType = "int" , paramType = "query" , example = "1" , required = true)})
    @ApiResponses({@ApiResponse(code=200,message = "请求成功")})
    @RequestMapping(value="/getById",method = RequestMethod.GET)
    @ResponseBody
    public Account getAccountById(@RequestParam("id") int id){
        AccountService service1 = SpringUtil.getBean("accountServiceImpl");
        return service1.getById(id);
    }

就是一个简单的查询,测试通过。
不过一般好像也没这么写的,都是在controller里注入service接口。。

在其他文章里看到一段话,感觉有一点道理,引用在这里,这可能大概也许就是这个接口的作用了吧:

因为我们在做开发的时候,并不是说在每一个地方都能将属性注入到我们想要的地方去的,比如在Utils使用到dao,我们就不能直接注入了,这个时候就是我们需要封装springContext的时候了,而ApplicationContextAware就起了关键性的作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值