2. Spring bean 注解方式

使用注解创建对象

注解

  • 代码里面的特殊标记,使用注解可以完成功能
  • 注解写法 @注解名称(属性名=属性值)
  • 注解可以使用在类上面 \ 方法上面 \ 属性上面

使用注解

注解开发准备工作

  1. 导入jar包
    1. 基本jar包
      • commons-logging
      • log4j
      • spring-beans
      • spring-context
      • spring-core
      • spring-expression
    2. 注解jar包
      spring-aop
  2. 创建类和方法
public class anno{
    public void add(){
        System.out.println("add...");
    }
}

3.创建Spring的配置文件
* 以前引入的是beans的约束
* 注解 : 需要从新引入约束

<?xml version="1.0" encoding="UTF-8"?>
<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>

4.开启注解扫描

<!-- 
    开启注解扫描
    base-package的是扫描路径,多扫描可以不写全路径,写到包含的全部文件的路径即可
    这个方法扫描 类 / 方法 / 属性 上的注解
 -->
<context:component-scan base-package="cn.po"></context:component-scan>
<!--
    只扫描属性上面的注解(不经常用)
-->
<context:annotation-config></context:annotation-config>

注解创建对象

  • 注解方式–但是功能完全一样,主要为以后改变预留
@Component 基础
@Controller WEB层
@Service 业务层
@Repository 持久层

* 创建一个User对象
/**
 * 创建对象
 * 相当于 <bean id="user" class="com...">
 */
@Component(value="user")
public class User{
    private String uname;
    public void setUname(String uname){
        this.uname=uname;
    }
}

xml配置

<?xml version="1.0" encoding="UTF-8"?>
<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">
<!-- 分配注解扫描范围  -->
<context:component-scan base-package="cn.po"></context:component-scan>
</beans>

使用注解注入属性

@Autowired 自动装配
@Resource WEB层
  • 创建UserDao
/**
 * 创建对象
 * /
@Component(value="userDao")
public class UserDao{
}
  • 创建UserService
    1. 自动注入对象
/**
 * 创建对象
 * /
@Service(Value="userService")
public class UserService{
    /** 
     * 自动装配
     * UserDao通过注解的方式注入
     * UserDao类型的
     * /
    @Autowired
    private UserDao userDao;
    public void show(){
    }
}
2. 手动注入
/**
 * 创建对象
 * /
@Service(Value="userService")
public class UserService{
    /** 
     * 手动注入
     * UserDao通过注解的方式
     * 注入将注解的userDao对象
     * /
    @Resource(name="userDao")
    private UserDao userDao;
    public void show(){
    }
}

xml和注解混合使用

创建对象

  • 创建类
public class Book{
}
  • 创建对象
<bean id="book" class="com.bean.Book/>

注入属性

/** 
 * 创建对象
 */
@Component(value="shopping")
public class Shopping{
    /**
     * 注入属性
     * /
    @Resource(name="book")
    private Book book;
}

猜你喜欢

转载自blog.csdn.net/luke199257/article/details/80890330