博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring的annotation
阅读量:5235 次
发布时间:2019-06-14

本文共 1675 字,大约阅读时间需要 5 分钟。

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;
结果为: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标签的作用

转载于:https://www.cnblogs.com/wskb/p/10939430.html

你可能感兴趣的文章
【Node.js 】Express框架
查看>>
POJ 3628 Bookshelf 2(01背包)
查看>>
centos查看硬件信息
查看>>
Swift小功能点积累
查看>>
关于Unity中表面着色器的使用
查看>>
使用 AWS X-Ray 跟踪 API Gateway API 执行
查看>>
吴裕雄 python 神经网络——TensorFlow 变量管理
查看>>
SQL合并
查看>>
「一本通 4.1 练习 1」清点人数(loj10116)
查看>>
C++继承中的构造和析构
查看>>
validate表单验证
查看>>
Nginx配置WebService、MySQL、SQL Server、ORACLE等代理
查看>>
UWP开发细节记录:DirectX::XMMATRIX 的坑
查看>>
推荐代码风格和原则
查看>>
【BZOJ 2669】 2669: [cqoi2012]局部极小值 (状压DP+容斥原理)
查看>>
表格更新成本 二 问用户年龄和口令,直到他们提供有效的输入
查看>>
【HDU】3333 Turing Tree
查看>>
动态设置ASPX页面的Title值
查看>>
工作中使用到的技术和工具分享
查看>>
用Gradle命令行编译Android工程
查看>>