微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring D3

有之以为利,无之以为用


前言

Spring:基于注解(Dependency Injection)的IOC
DI是IOC的具体实现的技术

基于注解的IOC,必须要在Spring的核心配置文件添加包扫描。


一、创建对象的注解

@Component:可以创建任意对象。创建的对象的名称是类名的驼峰命名法,也可以指定对象的名称,如:@Component(“指定名称”)。
@Controller :专门用来创建控制器的对象
@Service :专门用来创建业务逻辑层的对象,负责向下访问数据访问层,处理完毕后的结果返回给界面层
@Repository:专门用来创建数据访问层的对象,负责数据库中的CRUD所有操作
(只记录了4个常用的)

二、依赖注入的注解

2.1简单类型类型的注入

@Value:用来给简单类型(8种基本类型+String)注入值

2.2引用类型的注入

2.2.1@Autowired

@Autowired:使用类型注入值,从整个Bean工厂中搜索同源类型的对象进行注入。
同源类型才可注入
同源类型:
· 被注入的类型(Student种的school)与注入的类型(school)是完全相同的类型
· 被注入的类型(Student种的school父)与注入的类型(子)是父子类
· 被注入的类型(Student种的school接口)与注入的类型(实现类)是接口和实现类的类型
注意:在有父子类的情况下,使用按类型注入,就意味着有多个可注入的对象。此时按照名称进行二次筛选,选中与被注入对象相同名称的对象进行注入

2.2.2@Autowired+@Qualifier

@Autowired (两个注解一起用)
@Qualifier :使用名称注入值,从整个Bean工厂中搜索相同名称的对象进行注入。
注意:如果有父子类的情况下,直接按名称进行注入值

三、添加包扫描的方式

3.1单个包扫描(推荐使用)

<context:component-scan base-package="org.example.controller"/>
<context:component-scan base-package="org.example.service.impl"/>
<context:component-scan base-package="org.example.dao"/>

3.2多个包扫描

多个包之间以逗号或分号分隔(一次性经行多包扫描)

<context:component-scan base-package="org.example.dao,org.example.service.impl,org.example.controller"/>

3.3扫描根包(不推荐)

会降低容器启动速度(多做无用功)

<context:component-scan base-package="org"/>

四 、为应用指定多个Spring配置文件

当项目越来越大,需要多人合作开发,一个配置就存在很大隐患

4.1拆分配置文件的策略

·按层拆:

application_controller.xml
<bean id="uController" class="com.bjpowernode".controller.UsersController">
<bean id="bController" class="com.bjpowernode".controller.BookController">
application_service.xml
<bean id="uService" class="com.bjpowernode".controller.UseRSService">
<bean id="bService" class="com.bjpowernode".controller.BookService">
application_mapper.xml
<bean id="uMapper" class="com.bjpowernode".controller.UsersMapper">
<bean id="bMapper" class="com.bjpowernode".controller.BookMapper">

·按功能

application_users.xml
<bean id="uController" class="com.bjpowernode".controller.UsersController">
<bean id="uService" class="com.bjpowernode".controller.UseRSService">
<bean id="uMapper" class="com.bjpowernode".controller.UsersMapper">
application_book.xml
<bean id="bController" class="com.bjpowernode".controller.BookController">
<bean id="bService" class="com.bjpowernode".controller.BookService">
<bean id="bMapper" class="com.bjpowernode".controller.BookMapper">

五、Spring配置文件的整合

5.1单个文件导入

<!--单个导入-->
<import resource="applicationContext_mapper.xml"/>
<import resource="applicationContext_service.xml"/>
<import resource="applicationContext_controller.xml"/>

5.2批量导入

<import resource="applicationContext_*.xml"/>

六、基于xml类型的自动注入

    <bean id="stu" class="org.example.pojo2.Student" autowire="byName">
        <property name="name" value="李松"></property>
        <property name="age" value="24"></property>
<!--        <property name="school" ref="school"></property>-->

byName=@Autowired
byType=@Autowired+@Qualifier


总结

调用子类的同时调用父类的构造方法
即子类的构造方法父类的构造方法都要调用

原文地址:https://www.jb51.cc/wenti/3284186.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐