大纲

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)

配置文件关闭 spring security_set方法

3)测试时:

*创建测试类,添加main函数,

测试:通过set方法来完成依赖注入。

配置文件关闭 spring security_依赖注入_02

通过构造方法来完成依赖注入。 

配置文件关闭 spring security_set方法_03

2.依赖注入的类型

配置文件关闭 spring security_set方法_04

 1)基本数据类型和字符串,使用value

2)类对象注入的属性类型为另一个对象,使用ref属性或者使用在property标签内嵌套使用bean标签从而注入对象

*使用ref属性

配置文件关闭 spring security_set方法_05

*在property标签内嵌套使用bean标签

配置文件关闭 spring security_set方法_06

3)类对象注入的属性类型为list类型

配置文件关闭 spring security_依赖注入_07

 4)类对象注入的属性类型为map类型

配置文件关闭 spring security_依赖注入_08

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文件,在文件中写入属性的值

 

配置文件关闭 spring security_依赖注入_09

 2)在xml配置文件中引入属性文件 ,再使用${变量名 }将属性的值替换

配置文件关闭 spring security_依赖注入_10

6使用注解的方式(使用注解的方式时,属性的set方法可写可不写)

1)增加导入aop的jar包

配置文件关闭 spring security_构造方法_11

2)创建UserDao的接口和UserDaoImp实现类

*UserDao接口中写入相关方法

*UserDaoImp实现UserDao接口,重写接口中的方法

配置文件关闭 spring security_构造方法_12

 

配置文件关闭 spring security_set方法_13

3)创建UserService的接口和UserServiceImp实现类

*UserService接口写入相关方法

*UserServiceImp依赖UserDao接口,即在该实现类中定义UserDao属性

*UserServiceImp实现UserService接口,重写接口中的方法,可通过UserDao对象调用UserDaoImp中的方法

配置文件关闭 spring security_依赖注入_14

配置文件关闭 spring security_构造方法_15

4)创建UserController类

 *UserController依赖UserService接口,即在该类中定义UserService属性

*添加相关方法,可以通过UserService对象调用UserServiceImp中的方法

配置文件关闭 spring security_构造方法_16

5)在resource目录下新建Spring Bean Definition file文件(文件名为:app4.xml)

在该配置文件中添加包扫描

配置文件关闭 spring security_依赖注入_17

6)添加注解

@Repository(value=“userDao“)//@Repository 持久化DAO  等价于<bean id="" class="">
@Service(value="userService")   //业务层注解
依赖的属性添加自动注入
@Autowired//自动注入注解  默认按照类型注入,若有多个类型相同的那么就会按照名称注入(建议使用这个)
@Resoure//自动注入  自动按照名称注入,若没有名称相同的bean那么就按照类型来注入, 也可以添加name,按照指定的名称注入
@Controller  //控制层注解

@Component(组件)

*注解@Repository、@Service、@Controller、@Controller可以混用,但无法达到见名知意的作用,故区别使用

*UserDaoImp实现类中的注解

配置文件关闭 spring security_set方法_18

*UserServiceImp实现类中的注解

 

配置文件关闭 spring security_set方法_19

 *UserController中的注解

配置文件关闭 spring security_构造方法_20

7)测试:

配置文件关闭 spring security_构造方法_21