Spring学习(二)(1.Spring依赖注入的方式 2.依赖注入的类型 3.Bean的作用域 4.自动注入 5在Spring配置文件中引入属性文件6使用注解的方式 )
大纲
1.Spring依赖注入的方式
2.依赖注入的类型
3.Bean的作用域
4.自动注入
5.在Spring配置文件中引入属性文件
6.使用注解的方式
1.Spring依赖注入的方式
1.1通过set方法来完成依赖注入
*property标签:示例中就是通过set方法来注入Hello类的name属性的值
属性:name="属性名"、value="属性值"
1 <bean id="hello1" class="com.zhiyou.clg.spring.Hello"> 2 <property name="name" value="张三" /> 3 </bean>
1.2通过构造方法来完成依赖注入
*constructor-arg标签:表示构造方法的参数
属性:index:表示第几个参,下表索引从0开始
name:构造方法的参数名
value:注入的属性值
ref:指向另一个bean对象
1 <!-- constructor-arg:构造方法的参数 2 index:表示第几个参,下表索引从0开始 3 name:构造方法的参数名 4 value:注入的属性值 5 ref:指向另一个bean对象 --> 6 <bean id="hello2" class="com.zhiyou.clg.spring.Hello"> 7 <constructor-arg index="0" value="李四" /> 8 <constructor-arg index="1" value="25" /> 9 </bean>
*具体步骤(java工程):
1)导入jar包(logging、beans、context、core、expression)
2)创建Hello类,添加属性、set、get方法
3)在resource目录下,新建Spring Bean Definition file文件(文件名app1.xml)
在app1.xml文件中填加bean标签(属性:id、class),bean标签中添加property标签(属性:name、value)
3)测试时:
*创建测试类,添加main函数,
测试:通过set方法来完成依赖注入。
测试:通过构造方法来完成依赖注入。
2.依赖注入的类型
1)基本数据类型和字符串,使用value
2)类对象注入的属性类型为另一个对象,使用ref属性或者使用在property标签内嵌套使用bean标签从而注入对象
*使用ref属性
*在property标签内嵌套使用bean标签
3)类对象注入的属性类型为list类型
4)类对象注入的属性类型为map类型
3.Bean的作用域
Bean的作用域,默认为单例模式(无论创建多少对象,都指向同一个地址)
scope:表示bean的作用域,默认为singleton(单例模式)
prototype:原生,即非单例
struts2:表示该框架要求非单例
1 <bean id="hello1" class="com.zhiyou.clg.spring.Hello" scope="prototype"> 2 <property name="name" value="张三" /> 3 </bean>
4.自动注入
autowire:自动注入属性
byType:根据userDao属性的类型,找到与之匹配的bean
byName:根据属性名找与之匹配bean的id
no:需要手动注入
default:设置全局的 default-autowire="default"
1 <bean id="uservice" class="com.zhiyiou.clg.service.UserService" autowire="byType"> 2 <!-- <property name="userDao" ref="uDao"></property> --> 3 </bean>
5在Spring配置文件中引入属性文件
1)在resource目录下新建my.properties文件,在文件中写入属性的值
2)在xml配置文件中引入属性文件 ,再使用${变量名 }将属性的值替换
6使用注解的方式(使用注解的方式时,属性的set方法可写可不写)
1)增加导入aop的jar包
2)创建UserDao的接口和UserDaoImp实现类
*UserDao接口中写入相关方法
*UserDaoImp实现UserDao接口,重写接口中的方法
3)创建UserService的接口和UserServiceImp实现类
*UserService接口写入相关方法
*UserServiceImp依赖UserDao接口,即在该实现类中定义UserDao属性
*UserServiceImp实现UserService接口,重写接口中的方法,可通过UserDao对象调用UserDaoImp中的方法
4)创建UserController类
*UserController依赖UserService接口,即在该类中定义UserService属性
*添加相关方法,可以通过UserService对象调用UserServiceImp中的方法
5)在resource目录下新建Spring Bean Definition file文件(文件名为:app4.xml)
在该配置文件中添加包扫描
6)添加注解
@Repository(value=“userDao“)//@Repository 持久化DAO 等价于<bean id="" class="">
@Service(value="userService") //业务层注解
依赖的属性添加自动注入
@Autowired//自动注入注解 默认按照类型注入,若有多个类型相同的那么就会按照名称注入(建议使用这个)
@Resoure//自动注入 自动按照名称注入,若没有名称相同的bean那么就按照类型来注入, 也可以添加name,按照指定的名称注入
@Controller //控制层注解
@Component(组件)
*注解@Repository、@Service、@Controller、@Controller可以混用,但无法达到见名知意的作用,故区别使用
*UserDaoImp实现类中的注解
*UserServiceImp实现类中的注解
*UserController中的注解
7)测试: