在前面: 在spring的对象文件中,给Java对象的属性赋值: spring调用类的set方法,你可以在set方法中完成属性的赋值 一个property只能给一个属性赋值 需要有set方法,否则会报错 xml文件中的代码:(使用set方法赋值<property>标签) spring调用类有参数构造的方法,在创建对象的同时,在构造方法中赋值 构造注入使用<constructor-arg>标签 <constructor-arg> 标签:一个表示构造方法一个参数 <constructor-arg>属性: 代码(<constructor-arg>中的name-value的格式使用) 代码(<constructor-arg>中的index-value的格式使用,当参数为有序的时候index可以省略) 语法: 注意: 代码: Java类中 引用用类型的属性名和spring容器中(配置文件)<bean>的id一样,且数据类型是一致的,这样的容器中的bean,spring能够根据名称赋值给引用类型 如果项目有多个模块(相关功能在一起),一个模块一个配置文件 包含关系的配置文件: 在包含关系的配置文件中,可以使用通配符(*:表示任意字符),可以把某些符合条件的文件一次加载进来 总配置文件: 各模块配置文件的写法: 学习的注解: 步骤: xml文件中添加组件扫描器 给类添加注解,并赋值 @Component注解:调用无参构造方法 @Respotory:(持久层注解)放在Dao的实现类上面,表示创建dao对象,dao对象是能够访问数据库的 @Service:(业务层类)放在service的实现类上面,创建service对象,service对象是业务处理,可以有事务功能的 @Controller:(控制器)放在控制器(处理器)类上面的,创建控制器对象的,控制器对象,能够接受用户提交的处理参数,显示请求的处理结果 指定多个包的方式: @value:value是String类型的,表示简单类型的属性值 spring框架提供的注解,实现引用类型的赋值 添加注解的位置: byType: 来自jdk中的注解,spring框架提供了对这个注解的支持,可以使用它给引用类型赋值 ) 添加依赖: 本站所有文章均为原创,欢迎转载,请注明文章出处:爱敲代码的小游子
本人是一名物联网工程专业大二的学生,是互联网浪潮中一朵小小的浪花,写博客即是为了记录自己的学习历程,又希望能够帮助到很多和自己一样处于起步阶段的萌新。临渊羡鱼,不如退而结网。与其羡慕别人有顶尖的技术,还不如自己慢慢摸索学习。终有一天,你也能称为别人“羡慕”的人
博客主页:https://blog.csdn.net/qq_44895397 di依赖注入,表示创建对象,给属性赋值 di的实现方法有两种: 1、在spring的配置文件中,使用标签完成,叫做基于XML的di实现 2、使用spring中的注解,完成属性赋值,叫做基于注解的id实现 di的语法分类: 1、set注入(设值 注入):spring调用类的set方法实现属性的赋值。 2、构造注入:spring调用类的有参数的构造方法,创建对象,在构造方法中完成赋值
基于XML的di实现
注入:赋值 简单类型:spring中规定Java的基本数据类型和String都是简单类型 di:给属性赋值
1、set注入(设值注入)
<bean id=“这个对象的唯一标识,通过id找到对象” class= "创建对象的类的全限定名称"> <property name="属性名" value="赋的值"></property> </bean>
<bean id=“这个对象的唯一标识,通过id找到对象” class= "创建对象的类的全限定名称"> <property name="属性名" ref="bean的id(对象的名称)" /> 一个property只能给一个属性赋值 </bean>
<bean id="school" class="com.yky.domain.School"> <property name="name" value="湖中医" /> <property name="address" value="湖北" /> </bean> <bean id="student01" class="com.yky.domain.Student"> <property name="name" value="张三" /> <property name="age" value="19" /> <!--引用类型赋值:ref的值就是该类型的对象的id--> <property name="school" ref="school"/> </bean>
2、构造注入
name:表示构造方法的形参名 index:表示构造方法的参数的位置,参数从左往右位置是0,1,2的顺序(在按顺序传参时,可以省略) value:构造方法的形参类型的简单类型的,使用value ref:构造方法的形参类型是引用类型的,使用ref
<bean id="student02" class="com.yky.domain.Student"> <constructor-arg name="name" value="李四" /> <constructor-arg name="age" value="19" /> <constructor-arg name="school" ref="school" /> </bean>
<bean id="student03" class="com.yky.domain.Student"> <constructor-arg index="0" value="李四" /> <constructor-arg index="1" value="19" /> <constructor-arg index="2" ref="school" /> </bean>
3、引用类型的自动注入
spring框架根据某些规则可以给引用类型赋值,不用你再给引用类型赋值了 常用规则:byName,byType
1. byType自动注入(按类型自动注入)
<bean id="" class="" autowire="byType">简单类型赋值</bean>
在byType中,在xml配置文件中声明bean只能有一个符合条件的,多于一个就是多余<!--学校--> <bean id="school" class="com.yky.domain.School"> <property name="name" value="湖中医" /> <property name="address" value="湖北" /> </bean> <!--学生--> <bean id="student03" class="com.yky.domain.Student" autowire="byType"> <property name="name" value="王五" /> <property name="age" value="20" /> </bean>
2. byName自动注入(按名称自动注入)
<bean id="school" class="com.yky.domain.School"> <property name="name" value="湖中医" /> <property name="address" value="湖北" /> </bean> <!--学生--> <bean id="student03" class="com.yky.domain.Student" autowire="byName"> <property name="name" value="王五" /> <property name="age" value="20" /> </bean>
4、多个配置文件:(分模块的配置文件)
1、每个文件的大小比一个文件要小得多,效率高 2、避免多人竞争冲突
多个文件的分配方式: 1、按功能模块,一个模块一个配置文件 2、按类的功能,数据库相关的配置一个配置文件,做事务的功能一个配置文件…
主配置文件:包含其他区配置文件的,主配置文件一般不定义对象 语法:<import resource ="classpath:其他配置文件的路径" /> 关键字:"classpath:"表示类路径(class文件所在的目录) 在spring的配置文件中要指定其他文件的位置,需要classpath,告诉spring到哪里去加载读取文件
<!--主配置文件负责把各模块连接起来--> <import resource="classpath:di01/spring-student.xml" /> <import resource="classpath:di01/sprinh-school.xml" />
<bean id="studentdi01" class="com.yky.domain.Student" autowire="byType"> <property name="name" value="赵六" /> <property name="age" value="19" /> </bean>
<bean id="school" class="com.yky.domain.School" > <property name="name" value="湖中医" /> <property name="address" value="武汉" /> </bean>
基于注解的DI:通过注解完成Java对象创建,属性赋值
@Component:放在类上面生成对象,或给对象赋值 @Respotory: @Service @Controller @Value:给对象赋值,set方法上面,也可以放在属性上面 @Autowired:自动注入,默认byType,spring框架自带的 ,requied = true,如果要使用byName@Q…(value="") @Resource:自动注入的,默认byName,当byName不能成功赋值时,会使用byType
使用注解必须使用spring-aop依赖<!-- 添加组件扫描器 <context:component-scan base-package="com.springdemo.di01" /> 添加组件扫描器以后:xml文件会增加spring-context.xsd约束文件 context:表示的是哪个约束文件约束的标签 component-scan :组件扫描器标签 base-package:指定包,组件扫描器就会扫描包下以及子包下的所有类, 如果有注解就会生成相应的对象或给属性赋值,放入到容器中 --> <context:component-scan base-package="com.yky.di02" />
@Component(value = "studentdi02") public class Student { @Value("东方不败") private String name; @Value("18") private Integer age; /** * @Autowired * 给引用类型赋值 *底层原理是自动注入,默认byType * 当想要使用byName是添加注解@Qualifier(value = "<bean>的id") */ @Autowired @Qualifier(value = "myschool") private School school;
@Component(value = "myschool") public class School { @Value("湖中医") private String name; @Value("武汉") private String address;
当只有一个参数的时候value可以省略 也可以不指定value的值,使用spring的默认名称(默认的名称就是类名的首字母小写) spring中和Component功能一致,创建对象的还有
三个注解使用和@Component使用语法一样,但是这三个还有额外的功能,给项目分层
<context:component-scan base-package="com.springdemo.di02" /> <context:component-scan base-package="com.springdemo.di01" />
<context:component-scan base-package="com.springdemo.di01,(或者“;”)com.springdemo.di02" />
<context:component-scan base-package="com.springdemo"/>
1、简单类型的赋值:
位置:
@Component("di02school") public class School { @Value("湖中医") private String name; @Value("武汉") private String address;
2、引用类型赋值:
1、@Autowired
spring中通过注解给引用类型赋值,使用的是自动注入原理,支持byType,byName
默认是byType
属性:
@Component("myscholl") public class School { @Value("湖中医") private String name; @Value("武汉") private String address;
@Component("di03student") public class Student { @Value("都放假了") private String name; @Value("52") private int age; //@Autowired:使用的自动注入,默认是byType(根据类型查找) @Autowired private School school; byName: @Component("di03student") public class Student { @Value("都放假了") private String name; @Value("52") private int age; //@Autowired:使用的自动注入,默认是byType(根据类型查找) /** * @Autowired :表示自动注入 * @Qualifier(value = "myshool"):表示通过名字寻找这个引用类型类型的对象 */ @Autowired @Qualifier(value = "myshool") private School school;
2、@Resource
使用的也是自动注入原理,支持byName,byType,默认是byName
默认先使用byName,byName失败再使用byType
只使用byName:增加一个属性name
位置:
@Component("di04student") public class Student { @Value("符合实际") private String name; @Value("23") private int age;
//@Resource //jdk自带的,也是依据自动注入原理实现的,默认byName,当byName失败时,就会使用byType
@Resource(name = "myshool") private School school;
<dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.1</version> </dependency>
配置文件和${}结合
<!--加载资源文件--> <context:property-placeholder location="classpath:di02/test.properties" />
@Component(value = "di03student") public class Student { @Value("${di03.student.name}") private String name; @Value("${di03.student.age}") private Integer age; @Resource(name = "myshool") private School school;
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算