java - 注解注入和依赖注入是怎么一回事?
ringa_lee
ringa_lee 2017-04-17 17:51:29
0
4
980

最近开始试着做web项目,从别人的代码看到了漫天的注解。真的很难懂。然后硬着头皮各种补知识。大概了解到Spring的ioc思想,通过控制反转,使程序变得解耦。它好像是通过xml来配置具体的bean实现在使用的时候具体的目标类?它的反转控制大概就是这样的思想吧?但是各种问题也跟着来了。注解注入又是怎么回事啊?就想一个关于使用了Jersey的代码。如下:

public Viewable getItemsView(@QueryParam("limit") @DefaultValue("5") int limit, @QueryParam("start") @DefaultValue("5") int start, @Context HttpServletRequest request) {}
            

在参数前加注解是为了什么?而且看了好多文章都说注解可以实现自动注入?又像如下代码:

public class TodoResource {
    @Context
    UriInfo uriInfo;

    @Context
    HttpRequest request;
    @Context
    HttpResponse response;

    String id;

    public TodoResource(UriInfo uriInfo, Request request, String id) {
        this.uriInfo = uriInfo;
        this.request = request;
        this.id = id;
    }
}

uriInfo和request以及response是怎么做到通过注解就能够为其提供具体的对象引用?还有一个最重要的问题,就是容器如何做到通过注解就能够识别我的具体需要的是哪个参数呢?类装载器自动扫描么?那么又是如何为其赋值的?假如属性的权限是private的。如果直接使用注解对属性进行注入是不是就破坏了封装性?而如果我的属性同时具有Httpresponse 这个类的两个对象,response1和response2,那么又如何确定到底bean容器里哪个才是我需要的对象呢?我大致的理解是这样,同时也带有很多的疑问。不知道有没有能够描述清楚。又或者我的理解本身就是错误的?如果理解本身就是错误的,希望能够详细讲解一下依赖注入与注解注入以及在web项目中注解是如何工作的?如果您有时间的话?不妨在告知一下具体的注解注入实现过程?感激不尽!

ringa_lee
ringa_lee

ringa_lee

모든 응답(4)
巴扎黑

먼저 다음 두 기사를 살펴보세요.

주석

의존성 주입

spring에서는 주석 기술을 통해 일부 종속성 주입이 이루어졌다고 할 수 있습니다!

PHPzhong

1.5에 주석이 도입되었다는 사실을 잊으셨나요? 시간이 지나면서 나는 가장 기본적인 것들을 거의 잊어버렸습니다.
대략적인 아이디어를 제공하기 위해 특수효과와 관련하여 다음 사항을 언급해야 합니다.

이것도 주석인데 이 주석의 기능은 무엇인가요? 프로젝트가 온라인화되기 전에 DOC 문서를 작성하기 위한 기본 요소에 지나지 않습니다. 이는 프로젝트 코드의 실제 작동에 영향을 미치지 않는다는 전제에 기반합니다.
질문자가 헷갈리는 주석 구현 세부 사항에 대해서는 질문자가 주석을 맞춤화하고 맞춤 주석을 추가하는 과정을 통해 개요를 얻을 수 있는 것이 좋습니다(자세한 내용은 설명서를 참조하세요).
Spring은 주석을 활용하고 종속성 주입을 구현합니다. 스프링 컨테이너는 빈을 어떻게 관리하나요? (싱글톤이 무엇인지, 프로토타입이 무엇인지 이해해야 합니다.)
예, 종속성 주입(개인 키워드 보호)은 캡슐화를 어느 정도 파괴합니다.
또한 주석(예: @Autowired)은 삽입(가장 기본적인 두 가지 방법인 xml 삽입 및 주석 삽입) 방법 및 구현입니다. 주석을 추가한 후에는 주석에 대한 xml 구성 파일도 스캔해야 한다는 점을 기억하십시오.

훌륭한 사람이 아니면 뿌리지 마세요

刘奇

주석 삽입으로 구성 파일 작성이 크게 단순화됩니다

刘奇

http://stackoverflow.com/questions/21588684/spring-aop-annotationannotation 참조

주석 자체는 마크일 뿐이며 Java의 @annotation을 참조한 다음 ApplicationContext에서 스캔을 구성한 다음 @service와 같이 표시된 주석을 통해 값을 설정합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿