20200111——spring基于注解的IOC以及IOC的案例

**spring基于注解的IOC以及IOC的案例 **
1 spring中的ioc常用注解

2 案列使用xml方式和注解方式实现单表的crud
持久层技术选择:d’butils

3 改造基于注解的ioc方式,使用纯注解的方式
spring的一些新注解使用

4 spring与junit的整合

基于注解的ioc配置
注解配置和xml配置实现的功能都是一样的,都是降低程序间的耦合,只是形式不一样。

 * <!--    <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean>-->
  • 用于创建对象的
  •  他们的作用就是xml配置文件中编写一个bean标签实现的功能是一样的
    
  • 用于注入数据的
  •  他们的作用就喝在xml配置文件中的bean标签中的property标签一致
    
  • 用于改变作用范围的
  •  他们的作用就和在bean标签中使用scope属性实现的功能是一样的
    
  • 和生命周期相关的
  •  他们的作用就和在bean标签中使用init-methods 和 destroy-methods的作用是一样的
    

component注解

用于把当前类对象存入spring容器中
属性是value 用于指定bean的id 当我们不写时,它的默认值是当前类名,且首字母小写

aop是注释使用的必须jar包

@Component
public class AccountServiceImpl implements IAccountService {

    private IAccountDao accountDao ;

    public AccountServiceImpl(){
        System.out.println("对象创建了");
    }

    public void  saveAccount(){
        accountDao.saveAccount();
    }
}

标识这个类生成一个对象存入spring的容器中
下一步还需要在bean.xml中告知spring去扫描包
配置标签不再beans中,名称为context名称空间和约束

第一步加载:名称为context名称空间和约束
第二步引入:引入标签中配置扫描的包

    <context:component-scan base-package="com.itheima"></context:component-scan> 

可以在@componennt这个标签后面 添加value 相当于指定属性

@Component(value = "mmz")

三个注解
Controller 表现层
Service 业务层
Respository 持久层
以上三个注解它们的作用和属性与component是一模一样的。它们三个是spring框架为我们明确提供三层使用的注解。使我们的三层对象更加清晰

        IAccountDao adao  = (IAccountDao) ac.getBean("accountDaoImpl");
        System.out.println(adao);

使用repository注解标识的bean

@Repository
public class AccountDaoImpl implements IAccountDao {

    public  void saveAccount(){

        System.out.println("保存了账户");
    }
}

注入数据的注解
Autowired 作用 :自动 按照类型注入,只要容器有惟一的bean对象类型和要注入的变量类型匹配就可以注入成功
如果ioc没有任何bean类型和要注入的变量类型匹配报错
如果ioc有多个类型匹配时:
出现位置:可以是成员变量,也可以是方法上
细节:在使用注解注入时,set方法就不是必须的了

springIOC是一个map结构
key是String类型 value是Object类型

Qualifier:
作用:在按照类型的注入基础之上在按照名称注入。它给类成员注入时,不能单独使用,但是给方法参数注入的时候可以。
属性:value用于指定注入bean的id
不能单独使用

Resource 作用:直接按照bean的id注入,它可以独立使用
但是他的问题,不是value,而是name了

以上的三个注解都只能注入其他bean类型数据,基本类型,String类型无法使用上述注解实现
另外,集合类型的注入只能通过xml类实现

@Value 用于基本类型和String类型的注解
属性 value:用于指定数据的值,它可以使用spring中的EL el表达式
SPel写法也是 ${表达式}

用于改变作用范围
Scope 作用:用于指定bean的作用范围
属性: value:指定范围的取值。常用取值,singleton prototype 对应单例多例

和生命周期相关
PreDestroy 作用:用于销毁方法
PostConstruct :用于初始化方法

发布了657 篇原创文章 · 获赞 39 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_36344771/article/details/103939284