2021-04-27

初学Spring框架(一)——IOC(学习笔记):

目录

IOC:控制反转(创建对象、属性赋值)

设值注入(xml注入/set注入)

注解注入

@component等4种功能相同的注解:

指定多个包的3种方式

@value:简单类型的属性赋值

@Autowired:spring框架提供的注解,实现引用数据的赋值。

@Resource:

xml注入VS注解注入


 


IOC:控制反转(创建对象、属性赋值)

IOC能够实现业务之间的解耦合,例如Service和Dao之间的解耦合

设值注入(xml注入/set注入

注解注入

第一步:加载依赖

第二步:创建类(类上边加注解@)

第三步:在配置文件中加入文件扫描器

声明组件扫描器(component-scan),组件就是java对象,base-package:指定注解在项目中的包名。

component-scan工作方式:spring会遍历base-package指定的包,把包中和子包中的所有类,找到类中的注解,按照注解的功能

创建对象,或给属性赋值。

加入了component-scan标签后配置文件的变化:

加入一个新的约束文件spring-context.xsd,给这个新的约束文件起了个命名空间的名称。


  http://
  http://

第四步:创建测试:test

@component等4种功能相同的注解:

当除了3种注解以外或者不清楚特定功能的时候用@component

@repository:用在持久层(Dao)的实现类上面,表示创建Dao对象,Dao对象是能访问数据的。

@Service:用在业务层(Service)的实现类上面,表示创建Service对象,能做业务处理,可以有事务等功能。

@Controller:用在控制层(Controller)上面,创建控制器对象,能够接收用户提交的参数,显示请求的处理结果。

四种注解功能相同,都能创建对象,但是应用的地方不同。

@repository,@Service,@Controller是给项目的对象分层的。

关于注解省略:

  1. 使用value属性,指定对象名称:@Component(value="myStudent")
  2. 可以省略value:@Component("myStudent")(实际项目中最常用)
  3. 直接写注解名称,不指定对象名称,由Spring提供默认名称(自动匹配,并且首字母小写)

指定多个包的3种方式

  1. 使用多次组件扫描器,指定不同的包
    
    
    
  2. 用分隔符(;或,)将各个包隔开

     

  3. 直接指定父包:com.hhhh
    @value:简单类型的属性赋值 
      

    属性:value是String类型的,表示简单类型的属性值

    位置:1.在属性定义的上面,无需set方法,推荐使用

    2.在set方法的上面

    @Autowired:spring框架提供的注解,实现引用数据的赋值。

    spring中通过注解给引用类型赋值,使用的是自动注入原理,支持byName,byType.

    @Autowired默认使用的是byType自动注入

    属性:required,是一个boolean类型的,默认true

    required=true:表示如果引用类型赋值失败,程序报错,并终止执行。(实际项目中用true更合适,保证程序中对象都是已赋值的)

    required=false:表示如果引用类型赋值失败,程序正常执行,运用类型是NULL

    位置:在属性定义的上面,无需set方法,推荐使用,2.在set方法的上边

    如果要是用byName方式,需要做的是:

    1.在属性上面加入@Autowired

    2.在属性上面加入@Qualifier(value="bean的id"):表示使用指定名称的bean完成赋值。

    @Resource:

    来自JDK中的注释,spring框架提供了对这个注解的功能支持,可以使用它给引用类型赋值,使用的也是

    自动注入原理,支持byName,byType,默认是byName,先试用byName自动注入,如果byName赋值失败,再使用bytype

    位置:1.在属性定义的上面,无需set方法,推荐使用。2.在set方法的上面。

    xml注入VS注解注入

    需要经常改的就用xml注入,不需要经常改的就用注解注入

    注解劣势;侵入性,需要修改一些东西

    优点:

    注解为主,配置文件为辅

     

     

     

     

     

     

     

     

     

     

你可能感兴趣的:(java,spring,后端,spring,boot,github)