老师请检查,抛出注解的问题!

老师请检查,抛出注解的问题!

package aop2;

import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.annotation.Resources;
@Component
//@Service
//@Repository
public class BookShop {

    public void sellingBooks(){
        System.out.println("卖出了寂寞无聊和孤独!");
    }
}
package aop2;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Component
@Aspect
public class MethodPro {
@Before("execution(* aop2..*.*(..))")
public void preSales(){
    System.out.println("===售前服务===");
}
@AfterReturning("execution(* aop2..*.*(..))")
public void afterSale(){
    System.out.println("==售后服务===");
}

}
package aop2;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringApplication {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath:aop2.xml");
        BookShop b = context.getBean(BookShop.class);
        b.sellingBooks();
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns="http://www.springframework.org/schema/beans"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<context:component-scan base-package="aop2"/>
<aop:aspectj-autoproxy/>
</beans>
  1. 老师在BookShop类的上面用什么注解合适呀,我用了这三个注解感觉都可以运行呢,哪一个会比较恰当呀?

  2. 老师在这个位置,用两个参数的方法前面指定BookShop类为啥会出错呢?只能用这种形式进行实例吗?

BookShop b = context.getBean(BookShop.class);


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小尤 2021-09-13 14:42:07

同学你好,1、已完成练习,棒棒哒!继续加油!

2、@Component, @Service, @Repository是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理 。所以在此处使用哪个注解都可以。不过具体使用哪个注解,建议同学根据他们的作用选择使用。如下所示:

    1)@Component是通用注解,其他两个注解是这个注解的拓展,并且具有了特定的功能 

    2)@Service层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。

    3)@Repository注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。

3) 同学描述是否是通过下方代码中的方式导致出现异常。如果是,则是可以通过该方法进行实例化的。如果不是,则建议同学重新描述一下问题。

BookShop b = context.getBean("bookShop",BookShop.class);
祝学习愉快!
  • 提问者 残泪 #1
    BookShop b = context.getBean("bookShop",BookShop.class);

    这里的bookShop为什么是默认使用首字母小写吗?我没有定义小写的bookShop呀,写的是大写的BookShop就会报错!

    https://img1.sycdn.imooc.com//climg/613f390709c6a19c14400535.jpg

    2021-09-13 19:42:01
  • 好帮手慕小尤 回复 提问者 残泪 #2

    同学你好,@Component, @Service, @Repository注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理。默认是驼峰方式进行注入,也就是根据类名进行转换,当类名一个单词组成时,则该单词均小写。当由多个单词组成时,第一个单词所有字母均小写,从第二个单词开始,每个单词的首字母大写。所以可以通过bookShop进行实例。

    祝学习愉快!

    2021-09-14 10:02:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师