spring 基础(二) spring 基于注解配置ioc容器

本文内容纲要:

- 1基础

- 1.1注解优势

- 1.2三类注解(注解功能划分)

- 1.3四类主键类型注解

- 1.3.1拓展@ConfigurationPropertie

- 1.4demo学习

- 1.5两类自动装配注解

- 1.5.1按照类型装配

- 1.5.2按名称装配

- 1.6元数据注解

1基础

1.1注解优势

  1. 摆脱繁琐的XML形式的bean与依赖注入配置。
  2. 基于"声明式"的原则,更适合轻量级的现代企业应用。
  3. 让代码可读性变得更好,研发人员拥有更好的开发体验。

1.2三类注解(注解功能划分)

  1. 组件类型注解-声明当前类的功能与职责。
  2. 自动装配注解-根据属性特征自动注入对象。
  3. 元数据注解-更细化的辅助IoC容器管理对象的注解。

1.3四类主键类型注解

  1. @Component:组件注解,通用注解,被该注解描述的类将被loC容器管理并实例化,以下三个都是主键注解的细化,当不确当用哪一个时候,就可以用这个。

  2. @Controller:语义注解,说明当前类是MVC应用中的控制器类。

  3. @Service:语义注解,说明当前类是Service业务服务类。

  4. 如果需要被spring Ioc识别 需要在contextApplication.xml中:

    1.   扫描com.imooc下所有的class,如果class中有之前那四个注解实例化并且管理到ioc容器中Image
    2. Image

  5. @Repository:语义注解,说明当前类用于业务持久层通常描述对应Dao类。

  6. Image

    Image

  7. 特别注意,当@Autowired注解使用某个对象时候,必须先用@Component/@Repository/@Service先将此类注解,否则springIoc找不到ImageImageImage

1.3.1拓展@ConfigurationPropertie

通过这种注解可以使得ConfigBean.class 中对象被注入值,但是要注意命名一定要相同

Image

Image

1.4demo学习

代码准备

Image

ImageImage

注意-其中contextApplication.xml中表头文件来源spring.io,具体见 spring ioc中contextApplication.xml

Image

1.5两类自动装配注解

Ioc容器运行中,自动为某个属性注入数据,自动装配注解就是为了依赖注入存在的。让Spring自动的把属性需要的对象找出来,并注入给该属性。

1.5.1按照类型装配

  1. @Autowired 按容器内对象类型动态注入属性,由Spring机构提供。

  2. @Inject 基于JSR-330(Dependency Injection for Java)标准, 其他同@Autowired,但不支持required属性

  3. 按照类型装配置的缺点:当一个接口下有两个实现(一个用于mysql数据库、一个用于oracle数据库,这个时候实例化就会出错,系统不知道实例化哪一个)

    1. Image
    2. Image
    3. mysql实现 Image
    4. oracle实现Image
    5. 解决这种方法,要么在不使用的实现中删除@Repository,要么在要使用的实现中添加@Primary(系统就使用这个)Image

1.5.2按名称装配

  1. @Named 与@Inject配合使用,JSR-330规范,按属性名自动装配 属性

  2. @Resource 基于JSR-250规范,优先按名称、再按类型智能匹配

  3. @Resource设置name属性,则按name在IoC容器中将bean注入

  4. @Resource未设置name属性

    1. 以属性名作为bean name在IoC容器中匹配bean,如有匹配则注入
    2. 按属性名未匹配,则按类型进行匹配,同@Autowired,需加入@Primary解决类型冲突
    3. 使用建议:在使用@Resource对象时推荐设置name或保证属性名与bean名称一致

  5. demo

    1.  Image
    2. Image
    3. 方式1 定义的名称与实现类名称不同,通过Bean( @Resource中定义名称=》和实现类相同) ioc容器则会根据名称去调用;方式2 定义的名称与实现类名称完全相同,ioc容器则会根据名称去调用;方式3如果以上都没有写,则和@Autowired解决方式相同Image

1.6元数据注解

  1. @Primary 按类型装配时出现多个相同类型对象,拥有此注解对象优先被注 入 @PostConstruct 描述方法,相当于XML中init-method配置的注解版本 。
  2. @PreDestroy 描述方法,相当于XML中destroy-method配置的注解版本 。
  3. @Scope 设置对象的scope属性 ,决定这个对象的生存周期是什么(单例模式、多例模式)。
  4. @Value 为属性注入静态数据。【@Value、@Resource、@Autowired对属性的设置原理都相同:运行时将private改为public 赋值完毕之后将public在改为private】Image

本文内容总结:1基础,1.1注解优势,1.2三类注解(注解功能划分),1.3四类主键类型注解,1.3.1拓展@ConfigurationPropertie,1.4demo学习,1.5两类自动装配注解,1.5.1按照类型装配,1.5.2按名称装配,1.6元数据注解,

原文链接:https://www.cnblogs.com/1439107348s/p/14281042.html

以上是 spring 基础(二) spring 基于注解配置ioc容器 的全部内容, 来源链接: utcz.com/z/296245.html

回到顶部