1、环境搭建
a)只用IOC功能
spring.jar、jarkata-commons.jar/commons-loggin.jar
2、IOC容器
A)实例化具体bean
B)动态装配
3、AOP支持
A)安全检查
B)事务管理
4、Spring IOC配置与应用
1、FAQ:不给提示
A)window-preferences-myeclipse-xml-xml catalog
B) User spefied Entries -add
i、Location:.../spring2.5.6/dist\resources\spring-beans-2.5.xsd
ii、 URI:
file:/spring2.5.6/dist\resources\spring-beans-2.5.xsd
iii、 key type: schema Location
iv、 Key
http://www.springframework.org/schema/beans 这个是些配置文件XML中的头信息
2、注入类型
A) setter方法注入
B) 构造方法的注入
C) 接口注入(也称方法注入)
3、id vs name
A)Spring_0400_IOC_id_Name 这个是测试项目的实例 下面同此
B) name与ID没有什么区别只是name 可以用特殊的字符如_等
4、简单属性的注入
A) Spring_0500_IOC_SimpleProperty
B) <property name=... value=....>
5、bean中属性的范围scope
A) Spring_0600_IOC_Bean_Scope
B) singleton 单列
C) proptotype 每次都创建新的对象原型,还有与web 相关的属性,但是都会提示
6、集合注入
A) Spring_0700_IOC_Collections
B) 很少用 但是不理解,参考文档
7、自动装配
A) Spring_0800_IOC_AutoWire
B) autowire="byName"/"byType"
C) 如果所有的bean都用同一种,可以使用beans的属性:default-autowire
8、生命周期
A) lazy-init(不重要)
B) init-method destory-method 不要和scope="prototype"一起使用,这个相当在方法的前面和后 面加入日志,自己写的bean很少用但是别人提供的会使用,如datasource连接池
9、Annotation 第一步:
A) 修改XML文件,参考文档<context: annotation-config />
怎样在Java代码中有自动提示功能:如加入@就有提示
在window-preferences-Java-Editor-content Assist即可
这边要有其功能也要配置schame模式的路径,具体方法参见4中FAQ
10、 如果自动注入的方法有两个bean注入,系统无法知道注入那个bean,所以就要
@Autowired
public void setUserDAO(@Qualifier("u这个是在配置文件中bean的命名") UserDAO userDao){}
应用的不是很多
11、在使用@Resource(一般常用的)
A) 必须在j2EE中加入common-annoations.jar
B) 默认是按照名称:名称找不到,按类型
C) 可以指定特定的类型如:
@Resource(name="u")
public void setUserDAO(UserDAO userDao){}
D) 但是如果手中没有源码,就可以在XML文件中配置,这个第2中方式
12、使用@Component,@Service,@Controller,@Repository作用都是一样,看以后的版本是否有扩充
A>要在XML文件中beans标签中加入
<context:component-scan base-package="要在自己哪个包中注入的bean如:com.hewen">
就会在com.hewen包下扫描所有的类,直到发现有类加入@component.
然后 @Resource
public void setUserDAO(UserDAO userDao){}此方法就会注入有@component类中,
但是如果有多个类加入了@component的组件,就要为组件命名如:@component("u")
要注入的方法前面加入@Resource(name="u"),这样的好处就不需要在配置文件中写bean来配置类,
一般情况下记得要写名字如:@component("userService")
B) 开发效率高
13、@scope与写在bean写XML中的scope一样,
@PostConstruct=init-method; @PreDestory=destory-method
注意以上13条忘记可以参见自己的源码或者查看文档
五、 AOP的概念
面向切面编程,某个模块可有可无可以在配置文件进行处理
动态代理的应用:事务管理、做日志、做权限管理、效率的检查
别如说过滤器
1、配置新的配置文件:
首先要加<aop:aspectj-autoproxy />
然后加入 xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
如果需要在写的时候需要提示:则需要在myeclipse进行配置,详细操作见Spring IOC配置与应用
FAQ:不给提示.
2、<aop:aspectj-autoproxy />aspectj是专门装配动态代理的框架,是一个面向切面的框架
3、如需要装配动态代理的标签就需要加入两个Jar文件,分别为aspectjtr.jar、aspectjweaver.jar
4、常见的Annotation:
可以代理构造方法、属性、异常等等详细的配置可以查看文档
A) JoinPoint 是连接点如:
@Before("execution(public void com.bjsxt.dao.impl.UserDAOImpl.save(com.bjsxt.model.User))")
public void before(){
System.out.println("method start");
}
在此类上要加入 @Aspect和@Component
B)Pointcut 相当于JoinPoint的集合如:
@Pointcut("execution(public * com.bjsxt.service..*.add(..))") com.bjsxt.service在命名空间下所有add的方法 都进行动态代理
C)Before
D)AfterReturning
E)AfterThrowing
F)After
G)Around 类似于dofilter
@Around("com.xyz.myapp.SystemArchitecture.businessService()")
public ObjectdoBasicProfiling(ProceedingJoinPointpjp) throws Throwable{
//startstopwatch
ObjectretVal=pjp.proceed();要调用此函数方法才能往下调用,相当于模式的责任链
//stopstopwatch
return retVal;
}
如果方法前后命名空间重复就可以这么定义:
@Pointcut("execution(public * com.bjsxt.dao..*.*(..))")
public void myMethod(){};
@Before("myMethod()")
public void before(){
System.out.println("method before");
};
@AfterReturning("myMethod()")
public void afterMethod(){
System.out.println("method after");
};
5、当程序报异常无法加载动态代理类,出现GBL什么之类的故需要jar文件,
因为一个类需要进行代理的时候,必须实现InvocationHandler接口,就会利用JDK动态代理获取代理类,
UserDAO userDAO = new UserDAOImpl();
LogInterceptor li = new LogInterceptor();//该类实现了InvocationHandler接口
li.setTarget(userDAO);
UserDAO userDAOProxy = (UserDAO)Proxy.newProxyInstance(userDAO.getClass().getClassLoader(), userDAO.getClass().getInterfaces(), li);//获取代理类,第一个参数获取被代理类的类加载器,第二个参数是被代理类的实现的接口,第三个参数是处理被代理类的类既是实现InvocationHandler接口
System.out.println(userDAOProxy.getClass());//可以进行测试是否得到代理对象
userDAOProxy.delete();
userDAOProxy.save(new User());
如果没有实现此接口,那么实行2进制码的类库进行代理,需要加入jar文件cglib-nodep.jar
分享到:
相关推荐
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
java *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取beanjava *spring工具类 方便在非spring管理环境中获取...
Spring Integration + Spring WS 整合 在 Java 领域中,Spring Integration 和 Spring WS 是两个常用的框架,它们分别负责集成系统和 Web 服务。今天,我们将探讨如何将这两个框架整合在一起,实现一个完整的 Web ...
包含spring 3.0.5的所有jar文件: org.springframework.aop-3.0.5.RELEASE.jar org.springframework.asm-3.0.5.RELEASE.jar org.springframework.aspects-3.0.5.RELEASE.jar org.springframework.beans-3.0.5.RELEASE...
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...
Spring框架是Java应用程序开发中的一个核心组件,它提供了一个丰富的IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)功能,使得开发者能够更方便地管理对象和实现模块化...
在Java开发领域,Spring Boot和Spring Batch的整合是构建高效批处理系统的一种常见方式。Spring Boot以其简洁的配置和快速的启动能力深受开发者喜爱,而Spring Batch作为Spring框架的一部分,专注于批量处理任务,...
在构建分布式系统时,Spring Cloud Gateway 作为微服务架构中的边缘服务或 API 网关,扮演着至关重要的角色。它负责路由请求到相应的微服务,并可以提供过滤器功能,如限流、熔断等。而Spring Security 则是 Java ...
spring3.1官方所有的jar包 org.springframework.aop-3.1.RELEASE.jar org.springframework.asm-3.1.RELEASE.jar org.springframework.aspects-3.1.RELEASE.jar org.springframework.beans-3.1.RELEASE.jar org....
这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...
Getting started with Spring Framework (4th Edition) is a hands-on guide to begin developing applications using Spring Framework 5. The examples (consisting of 88 sample projects) that accompany this ...
介绍一个基于Spring Boot 3.0、Spring Cloud 2022 & Alibaba的微服务RBAC权限管理系统。该系统可以实现微服务RBAC权限管理,通过RBAC权限管理机制对用户访问系统的权限进行限制,从而提高系统的安全性和可用性。同时...
项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二、 项目目的: 整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + ...
Spring Cloud和Spring Boot是两个非常重要的Java开发框架,它们在微服务架构中扮演着核心角色。Spring Boot简化了创建独立的、生产级别的基于Spring的应用程序的过程,而Spring Cloud则为开发者提供了快速构建分布式...
《Spring AI Core 0.8.1:开启人工智能之旅》 在现代软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java开发中的首选框架之一。而Spring AI Core则是Spring生态系统中专门为人工智能(AI)和机器学习...
《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从本书中参透Spring框架的出色架构和设计思想,还能从...
Spring 框架是 Java 开发中的一个核心组件,它为构建企业级应用程序提供了全面的编程和配置模型。Spring 4.3.14 是该框架的最后一个4.x系列正式版,发布于2018年2月24日。这个版本在Spring 5.0发布之前提供了一个...
在IT行业中,Spring框架是Java应用开发中的一个关键组件,它提供了一整套服务来简化企业级应用的构建。RabbitMQ则是一个流行的开源消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,用于高效地...
Spring Cloud系列教程 Spring Boot Spring Cloud Stream 和 Kafka案例教程 springcloud生产者与消费者项目实战案例 Spring Cloud 中断路器 Circuit Breaker的应用 配置 Spring Cloud Config Server Spring Cloud ...