Spring

xiaoxiao2021-07-05  257

SpringIOC

Spring_IOC

概念: 控制反转(Inversion of Control,缩写为IOC),是面向对象编程中的一种设计原则,可以用来 减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI)。 通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象 的引用传递给它。也可以说,依赖被注入到对象中。 Spring最核心的概念就是IOC或者DI。 使用Spring你不必在程序中维护对象的依赖关系,只要在配置文件或注解中设定,Spring容器会自 己根据相关的配置去产生他们之间的关系,就相当于在所有的关系都是在容器运行的时候注入, 而本身他们的关系是没有的。 bean 实例化的方式有4种:

1:构造器实例化(最常用,最标准),默认调用类的无参构造器来初始化对象,与构造器的访问修饰符无关。 <bean id="hell" name="hello,h,m,c" class="com.zhiyou100.Hello"></bean> <bean id="hello1" class="com.zhiyou100.Hello"></bean> 2:静态工厂实例化(了解) <bean id="staticHello" class="com.zhiyou100.StaticHello" factory-method="getHello"></bean> 3:实例工厂实例化(了解) *实例工厂获取bean 第一步先配置工厂bean* <bean id="hellofac" class="com.zhiyou100.HelloFactory"></bean> *第二步:引用工厂bean,及方法* <bean id="helloFactory" class="com.zhiyou100.HelloFactory" factory-bean="hellofac" factory-method="getHello"></bean> 4:实现FactoryBean接口实例化(了解) <bean id="helloFactory2" class="com.zhiyou100.HelloFactory2"></bean>

// 了解 SpringBean对象的作用域,在scope标签中: singleton(单利模式):所有创建出来的对象都是单利的 prototype(多利模式):每一次创建的都是全新的对象 request:用于web开发,每次请求都会获得一个新的bean session:同一个HTTP session共享一个Bean globalSession:主要用于单点登录,分布式部署等。

SpringBean对象的创建与销毁: 单利情况下:我们可以指定 init-method=“open” destroy-method="close"在bean被 初始化及销毁的时候调用其中方法。 多利情况下:Spring不负责对象的销毁,只负责初始化操作 问:Spring管理的bean对象是什么时候被创建出来的? 答:在我们的Spring配置文件被加载的时候创建。

Spring常见的注入方式:

第一种:set注入,必须提供Set方法才可以实现 <bean id="man" class="com.zhiyou100.di.Man"> <property name="name" value="#{'张三'}" /> <property name="age" value="#{27}" /> <property name="car" ref="car" /> </bean> 第二种:构造注入,通过构造方法来实现注入,index为构造方法参数下标 <bean id="man" class="com.zhiyou100.di.Man"> <constructor-arg index="0" value="张三" /> <constructor-arg index="1" value="26" /> <constructor-arg index="2" ref="car" /> </bean> 第三种:字段注入(后面完善) 第四种:接口注入(知道有这个就好) 第五种:类型注入(还是通过set注入)

Spring的三种装配方式: 1:XML手动装配(常用) 2:XML自动装配(了解) 如果根据name进行自动装配,要求set方法,要求Bean的ID与类中的属性名一致,如果找不到则不注入 如果根据"byType"进行自动装配,要求Spring中只有一个该类型的Bean,否则不知道要装配谁,会报错 如果根据constructor进行自动装配,要求有对应的构造方法,否则注入不进去 3:注解自动装配 @Autowired 标签的作用范围:字段上,与方法上 Spring提供的自动装配注解 会自动的去容器中寻找对象,首先根据类型去寻找,然后根据名字寻找如果寻找不到会抛异常, 如果找不到不想抛一场的话,可以设置属性required=false,寻找不到则不注入,如果找到多个 类型的Bean的话,会自动匹配字段名与ID,如果都匹配不上则会报异常,可以使用@Qualifier(“id”) 注解,告知指定ID或Name @Resource(name=“womanq”) 属于JavaEE提供的注解,作用与@Autowired一样 区别为:默认先根据ByName 查询,如果查找不到在根据ByType查询,可以指定name,或type

Spring 用注解声明bean的四种方式: @Component 所有受Spring管理组件的通用形式 @Controller 标识表现层组件 @Service 标识业务层组件 @Repository 标识持久层组件 实际上 下面 3种注解全部继承于Component,功能全部都一样,只是为了方便程序员区分 每一层的区别,而定义了每个层次专门的注解,当使用注解声明bean的时候,默认bean 名称是首字母小写的类名,如果需要指定bean名称,直接(“BeanName”)即可 使用注解形式声明bean需要在Spring.xml中配置注解扫描器。 <context:component-scan base-package=“com.zhiyou100” />

Spring Bean元素的继承,bean元素的继承与Java的继承是无关的 bean的继承是指,如果多个bean拥有同样的属性与值,则可以通过 定义一个抽象的bean,然后其他bean 使用parent属性继承即可 <bean id="base" abstract="true"> <property name="name" value="张三" /> <property name="age" value="30" /> </bean> <bean id="user" class="com.zhiyou100.model.User" parent="base"> </bean>
转载请注明原文地址: https://www.6miu.com/read-4821446.html

最新回复(0)