• 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>

    5Spring配置文件中引入属性文件

     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)测试:

  • 相关阅读:
    分布式锁原理及实现方式
    【FAQ】Maven 本地仓库明明有jar包,pom文件还是报错解决办法
    【FAQ】tomcat启动jdk版本不一致
    【Map,HashMap,Vector,List】资料汇总
    【FAQ】调用接口序列化问题
    【docker】docker下安装mysql
    linux tcpdump抓包Post请求
    Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败
    Springboot使用Shiro-整合Redis作为缓存 解决定时刷新问题
    CentOS yum 安装nginx
  • 原文地址:https://www.cnblogs.com/jingmochen/p/11477061.html
Copyright © 2020-2023  润新知