@Component
@Aspect
public class LogAspact {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Pointcut("execution(* com.liqk.service..*.*(..))")
public void pointCut(){}
@Before("pointCut()")
public void start(JoinPoint jp){
String mName = jp.getSignature().getName();
String cName = jp.getSignature().getDeclaringTypeName();
log.info("{}-{}:开始执行",cName,mName);
}
@After("pointCut()")
public void end(JoinPoint jp){
String mName = jp.getSignature().getName();
String cName = jp.getSignature().getDeclaringTypeName();
log.info("{}-{}:执行结束",cName,mName);
}
}
注意添加完毕后需要在配置类添加 @EnableAspectJAutoProxy
配置类上需要设置后 才能识别AOP的注解内容
@EnableAspectJAutoProxy(proxyTargetClass = true)
Spring 提供的基于Java类的配置声明 可以使用Java类来替代XML文件
最终达到无配置文件的效果 但使用纯粹的Java配置类来进行项目配置的话
部分配置的耦合度太高 最终还是建议 配置文件和 配置类 混合使用
希望Spring识别到当前类是一个配置类 则必须在该类上面添加@Configuration
Spring容器在启动时 会扫描当前声明有@Configuration注解的Java类 并以该类为容器的配置信息初始化容器
/**
* Spring 提供的基于Java类的配置声明 可以使用Java类来替代XML文件
* 最终达到无配置文件的效果 但使用纯粹的Java配置类来进行项目配置的话
* 部分配置的耦合度太高 最终还是建议 配置文件和 配置类 混合使用
* 希望Spring识别到当前类是一个配置类 则必须在该类上面添加@Configuration
* Spring容器在启动时 会扫描当前声明有@Configuration注解的Java类 并以该类为容器的配置信息初始化容器
*/
@Configuration
//在配置类上开启全局扫描 可以获取指定的配置注解 并开始执行Bean管理以及注入内容
@ComponentScan("com.wangbx")
//表示以当前类为主配置类 可以在该类中引入其他配置类 会相关类类型
@Import(UtilConfig.class)
/*在Spring的注解或者一些配置标签中 可以使用classpath字符串 表示当前根目录*/
@ImportResource("classpath:shopping.xml")
/*
* 配置类上需要设置后 才能识别AOP的注解内容
* */
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class ApplicationConifg {
/*
* 在配置类中 管理第三方Bean
* 只需要在当前的配置类中进行Bean的注册 该注册需要使用注解 @Bean
* 当默认情况下 @Bean管理的 Bean对象名称 在容器中的命名 和 当前方法名一致
*
* 也可以通过@Bean的name属性来重新定义Bean在容器中的名称
*
* 通过@Bean来管理第三方Bean时 只需要提供一个公共的方法 返回值是目标对象类型即可
* Spring会将该返回值 当做容器要管理的Bean
* */
/* @Bean("abc")
@Scope("prototype")
public Date registTime(){
return new Date(2000,6,18);
}*/
// 从容器中获取指定的Bean 并注入值属性中
@Autowired
private TestBean testBean;
/*
* 将自己的Bean 注入值第三方Bean中
* */
@Bean public Utils utils(){
Utils utils = new Utils();
// 此处需要注入的是容器中的TestBean 而不是手动创建
utils.setTbean(testBean);
return utils;
}
/*
* 第三方注入第三方
* */
@Bean @Lazy
public Math math(){
Math math = new Math();
// 此处的Utils对象需要从容器获取 不能自己手动创建
// 可以通过 调用@Bean管理的方法即可
math.setUtils(utils());
return math;
}
}