Spring-day2

本文深入探讨Spring框架的bean管理与注解开发,包括@component、@Controller、@Service、@Repository等注解的使用,以及AOP的概念、原理和AspectJ的XML配置方法,帮助读者掌握Spring的核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Spring的bean管理(注解)

(1)注解:代码里面特殊标记,使用注解可以完成功能。

(2)注解写法@注解名称(属性名称=属性值)

(3)注解使用在类上面,方法上面和属性上面

Spring注解开发准备

1.导入Jar包,导入aop的jar包;

2.创建一个类,创建一个方法;

3.创建spring配置文件,引入约束

(1)第一天做ioc基本功能,引入约束beans;

(2)做spring的ioc往注解开发,引入新的约束;

<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.开启注解的扫描

<!--开始注解扫描
  (1)到包里面扫描类、方法、属性上面是否有注解
-->
<context:component-scan base-package="cn.itcast"></context:component-scan>
<!--
   扫描属性上面的注解
-->
<!--<context:annotation-config></context:annotation-config>>
  •  注解创建对象

1.在创建对象的类上是使用注解实现

@component(value="user")   //<bean id="user" class="/">
public class User{}

 二、创建对象有四个注解

Spring中提供@component的三个衍生注解:(目前来讲功能是一致的)

@Controller    :web层

@Service        :业务层

@Repository   :持久层

这三个注解是为了让标注本省的用途清晰,Spring在后续版本会对其增强

3.创建对象单实例还是多实例

@Service(value="user")
@Scope(value="prototype")
public class User{}
  • 注解注入属性

1.创建service类,创建dao类,在service得到dao对象;

 Service类

第一种注解:@Autowired

@Service(value="userService")
public class UserService{
  //1.定义dao属性
  //在dao属性上使用注解完成对象注入
  @Autowired  //自动装配是根据UserDao进行装配的
 private UserDao userDao;
 //使用注解方式时候不需要set方法
 public void add(){
   System.out.println("service......");
   userDao.add();
   }
 
}

 第二种注解:Resource

@Service(value="userService")
public class UserService{
  //name属性值写注解到创建dao对象value值,保持与Dao类中Component注解中的Value一致
 @Resource(name="userDao")
 private UserDao userDao;
 //使用注解方式时候不需要set方法
 public void add(){
   System.out.println("service......");
   userDao.add();
   }
 
}

 dao类

@Component(value="userDao")
public class UserDao{
  public void add(){
     Sysetm.out.println("dao.....");
  }

}

 TestAnno类

public class TestAnno{
@Test
    public void testService(){
      ApplicationContext context = 
                           new ClassPathXmlApplicationContext("bean1.xml");
     UserService userService = (UserService)context.getBean("userService");
     userService.add();
   }
}
  • 配置文件(xml)和注解方式混合使用 

    1.创建对象操作使用配置文件方式实现;

    2.注入属性的操作使用注解方式实现;

2.AOP

  • aop概述

概念:面向切面(方面)编程,扩展功能步修改源代码实现。AOP采用横向抽取机制,取代了传统纵向继承体系重复代码(性能监视、食物管理、安全检查、缓存)

  • aop底层原理

 

 

  • aop操作相关术语

 连接点:类里面那些方法可以被增强,这些方法称为连接点。

切入点: 在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面 add()和update(),实际增强的方法称为切入点。

通知/增强:增强的逻辑,曾为增强/通知,比如扩展日志功能,这个日志功能称为增强。

分为前置通知:在方法之前执行

后置通知:在方法之后执行

异常通知:方法出现异常

最终通知:在后置之后执行

环绕通知:在方法之前和之后执行

切面:把增强应用到具体方法上面,过程称为切面。 

三、spring的aop操作(基于aspectj的xml方式)

 1.在spring里面进行aop操作,进行aspectj实现 

    (1)aspectjb不是spring的一部分,和Spring一起使用进行aop操作

    (2)Spring2.0以后新增了对Aspectj支持。

  2.使用aspectj实现aop有两种方式:

      (1)基于aspectj的xml配置

       (2)给予aspectj的注解方式

AOP操作准备

  1.导入核心jar包。

  2.创建spring核心配置文件,导入aop的约束

实用表达式配置切入点

   1.切入点,实际增强的方法。

   2.常用的表达式。

execution(<访问修饰符>?<返回类型><方法名>(<参数><异常>))

(1)execution(* cn.itcast.aop.Book.add(....))

  (2) execution(* cn.itcast.aop.Book.*(..))

  (3) execution(* *.*(....))

 (3)匹配所有save开头的方法 execution(* save*(...))

 Aspectj的aop操作

4.log4j介绍

   (1)通过log4j可以看到程序运行过程中更详细的信息

         经常使用log4j查看日志

    (2)使用

           (1)导入log4j的jar包

           (2)复制log4j的配置文件,复制到scr下面

      (3)设置日志级别

               info,查看基本信息

               debug:查看更详细信息

5.spring整合web项目

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值