Spring学习笔记4,注解方式管理Bean

时间:2022-05-05 20:35:04

Spring框架的Bean管理注解方式的快速入门


1. 步骤一:下载Spring框架的开发包
  • 解压后的目录结构如下
    * docs – API和开发规范
    * libs – jar包和源码
         Spring框架的jar包的特点是每个jar包都有3个(使用的jar包、文档的jar包和源代码的jar包)
    * schema – 约束
2. 步骤二:创建JavaWEB项目,引入Spring的开发包
  • 引入Spring框架IOC核心功能需要的具体的jar包
    * Spring框架的IOC的功能,那么根据Spring框架的体系结构图能看到,只需要引入如下的jar包
    - 在spring-framework-4.2.4.RELEASE/libs/下
    * Beans
    * Core
    * Context
    * Expression Language

    • Spring框架也需要引入日志相关的jar包
      在spring-framework-3.0.2.RELEASE-dependencies/org.apache.commons/com.springsource.org.apache.commons.logging/1.1.1
    • com.springsource.org.apache.commons.logging-1.1.1.jar

    • 还需要引入log4j的jar包 spring-framework-3.0.2.RELEASE-dependencies\org.apache.log4j\com.springsource.org.apache.log4j\1.2.15
      * com.springsource.org.apache.log4j-1.2.15.j

3. 步骤三:创建对应的包结构,编写Java的类,要注意:以后使用Spring框架做开发,都需要来编写接口与实现类!!
  • com.tuzki.demo1
    * UserService – 接口
    * UserServiceImpl – 具体的实现类
4. 步骤四:在src的目录下,创建applicationContext.xml的配置文件,然后引入约束。注意:因为现在想使用注解的方式,那么引入的约束发生了变化
  • 需要引入context的约束,具体的约束如下
        <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

        </beans>
5. 步骤五:在applicationContext.xml配置文件中开启组件扫描
    <!-- Spring的注解开发:组件扫描(类上注解: 可以直接使用属性注入的注解) -->
    <context:component-scan base-package="com.tuzki.demo1"/>
  • 注意:可以采用如下配置

        <context:component-scan base-package="com.tuzki"/> 这样是扫描com.itheima包下所有的内容
6. 步骤六:在UserServiceImpl的实现类上添加注解
@Component(value="userService")   -- 相当于在XML的配置方式中 <bean id="userService" class="...">

Spring框架中Bean管理的常用注解


1. @Component:组件.(作用在类上)
2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的)
  • @Controller – 作用在WEB层
  • @Service – 作用在业务层
  • @Repository – 作用在持久层

  • 说明:这三个注解是为了让标注类本身的用途清晰,Spring在后续版本会对其增强

3. 属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法.)
  • 如果是注入的普通类型,可以使用value注解
    • @value – 用于注入普通类型
  • 如果注入的是对象类型,使用如下注解
    • @Autowired – 自动装配
      * 注意:问题,默认按类型进行装配
      * 如果想按名称注入
    • @Qualifier(“bean的id或name”) – 强制使用名称注入
    • 具体的代码如下:
      • ProductService的代码
            @Service(value="productService")
            public class ProductService {

                @Autowired  // 注入对象属性
                @Qualifier(value="productDao")  // 强制使用名称注入
                private ProductDao productDao;

                public void save(){
                    // 调用dao层
                    productDao.save();
                }
            }
 * ProductDao的代码如下 
            @Repository(value="productDao")
            public class ProductDao {
                public void save(){
                    System.out.println("保存商品...");
                }
            }
  • 刚才的上述两个注解一起使用,过于麻烦,所以提供了一个新的注解
        * @Resource     -- 相当于@Autowired@Qualifier一起使用

        * 修改ProductService的代码如下
            @Service(value="productService")
            public class ProductService {

                @Resource(name="productDao")
                private ProductDao productDao;

                public void save(){
                    // 调用dao层
                    productDao.save();
                }
            }
4.传统的XML和注解混合使用的方式
  • 概述
    • XML配置文件的方式结构比较清晰
    • 注解的方式开发比较简单(尤其是输入注入那一块比较简单)
  • 概述所以有的时候,可能会把XML和注解联合到一起使用
    • 使用XML来管理Bean,使用注解来提供属性注入的方式
  • 可以在配置文件中添加如下属性
    <!-- @Resource、@ PostConstruct、@ PreDestroy、@Autowired注解生效 -->
    <context:annotation-config/>

注解和xml混合使用


spring管理bean包括:
1、对bean进行实例化

2、对bean的属性依赖注入

对bean进行实例化在xml中配置bean:为了更好管理系统中bean.
Spring学习笔记4,注解方式管理Bean

对bean的属性依赖注入使用注解:为了简化开发。
使用哪些注解:Autowired(和Qulifier)、resource

需要修改web.xml中监听器。加载多个配置文件:

    <!-- 加载spring容器,与servletContext绑定 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 如果不指定contextConfigLocation,默认加载/WEB-INF/applicationContext.xml -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <!-- spring配置文件 可以采用加载多个文件,中间以半角逗号分隔,也可以使用通配符号 -->
        <param-value>classpath:spring/applicationContext.xml,classpath:spring/applicationContext-*.xml</param-value>
    </context-param>
    <!-- spring配置文件 可以采用加载多个文件,中间以半角逗号分隔,也可以使用通配符号 -->
        <!-- spring配置文件 可以采用加载多个文件,中间以半角逗号分隔,也可以使用通配符号 -->
        <param-value>classpath:spring/applicationContext.xml,classpath:spring/applicationContext-*.xml</param-value>
    </context-param>