zoukankan      html  css  js  c++  java
  • spring的annotation

    spring容器创建bean对象的方式:

    1,使用反射调用无参构造器来创建实例(前提是这个类有无参构造器)(常规方式)

    2,通过工厂类获得实例(工厂类实现了接口FactoryBean<?>)

    3,通过实例工厂获得bean对象(不需要实现或者继承任何接口或者父类)

    4,通过静态工厂获得实例

    ioc中的annotation配置

    1,@Autowired
        1) @Autowired使用后需要在xml文件加入以下配置才能生效: <context:annotation-config/>

     2)@Autowired默认使用byType来装配属性,如果匹配到类型的多个实例,再通过byName来确定Bean。

    2,@Resource

      1)@Resource的作用和@Autowired差不多,只不过 @Resource是默认先用byName,如果找不到合适的就再用byType来注入

      2)在xml文件加入以下配置才能生效: <context:annotation-config/>

    byName就是通过Bean标签中的id或者name属性值进行匹配注入(匹配的是setXxx中去掉set后的名字),byType就是按Bean标签中的Class的类型进行匹配注入。(根据当前类中的set方法里面参数的类型,
                去容器中找相匹配的对象)

    eg:

     注意:自动装配只对[对象类型]起作用,对基本类型不起作用.

    @Autowired
        private Car car;
      <!-- autowire注解 默认bytype,再byname -->
       <bean name="car" class="com.briup.ioc.annotation.Car">
            <property name="price" value="33333"></property>
            <property name="name" value="test"></property>
        </bean>
        <bean name="car123456" class="com.briup.ioc.annotation.Car">
            <property name="price" value="122222"></property>
            <property name="name" value="baoma"></property>
        </bean>
    结果为:
    33333.0
    test

    3,@controller 控制器(注入服务)
    用于标注控制层,相当于struts中的action层

    4、@service 服务(注入dao)
    用于标注服务层,主要用来进行业务的逻辑处理

    5、@repository(实现dao访问)
    用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

    6、@component (把普通pojo实例化到spring容器中,相当于配置文件中的
    <bean id="" class=""/>)
    泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

    @Component是Spring中所有bean组件的通用形式, @Repository @Service @Controller 则是 @Component的细化(它们区别很小,但最好归类使用)

    @Component有一个可选的参数,用于指定bean的名称
            @Component("boss")

    若不指定,默认为当前类的类名小写

     @Component注解可以直接定义bean,而无需在xml定义。但是若两种定义同时存在,xml中的定义会覆盖类中注解的Bean定义

     @Component注解直接写在类上面即可

        注意:
        1.component-scan标签默认情况下自动扫描指定路径下的包(含所有子包)

        2.component-scan标签将带有@Component @Repository @Service @Controller注解的类自动注册到spring容器中

        3.component-scan标签对标记了@Required @Autowired @PostConstruct @PreDestroy @Resource @WebServiceRef @EJB   @PersistenceContext @PersistenceUnit等注解的类进行对应的操作,使注解生效
        
        4.component-scan标签包含了annotation-config标签的作用

  • 相关阅读:
    Collaborative Knowledge base Embedding (CKE)
    Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation(知识图谱)
    解决:install service error: InstallAsEventCreate() failed: xxx registry key already exists
    解决:“由于可能不会将凭据发送到远程计算机,因此将不会进行连接。若要获得协助,请与您的系统管理员联系”
    Asp.Net Core下使用swagger生成api文档
    .NET Core 发布(dotnet publish)
    【.net core 入坑】.net core 3.0 报错:在 FETCH 语句中选项 NEXT 的用法无效
    使用SC命令操作(安装、开启、配置、关闭、删除)Windows下的服务
    asp.net core web应用以windows服务的方式安装运行
    asp.net core 3.0获取web应用的根目录
  • 原文地址:https://www.cnblogs.com/wskb/p/10939430.html
Copyright © 2011-2022 走看看