0
点赞
收藏
分享

微信扫一扫

java Spring 5.2.8部分使用回顾

注:走了一段路,总要回头看看,人的记忆是非常有限的,我总是受益于自己曾经写的东西,因为我发现我已经完全忘记所有涉及的细节。

一、spring基本架构:

运行时架构:

1-1: Data Access,Data Integration(一体化,集成)

包括子模块:JDBC ORM OXM JMS Transaction

1-2:Web(MVC  Remoting)

包括子模块:Web  Servlet Portlet Struts

(注:

Portlet是基于Java的Web组件,由Portlet容器管理,并由容器处理请求,生产动态内容

2-1:AOP(切向) 

2-2:Aspects(切向库) 

2-3:Instrumentation(代理检测JVM)

3-1:Core Container

包括子模块:Beans , Core , Context , Expression Language

4-1 Test

二、spring的核心功能:

  • Spring 容器作为超级大工厂,负责创建,管理所有Java对象(Spring 称之为Bean)(注:找不到bean的错误原因就是没有被spring容器管理)(本质是根据配置文件来创建Bean实例,并且调用Bean实例的方法完成依赖注入)
  • Spring 容器管理容器中Bean之间的依赖关系,spring使用”依赖注入“方式管理依赖关系​(注:找不到某个Bean,也可能是没有正确注入)​​

三、spring开发操作:

  • 开发Bean
  • 配置Bean​

注:Bean作用域--当通过Spring容器创建一个Bean实例,还可以为Bean指定特定的作用域

作用域五种:singleton,prototype,request,session,global session(默认是singleton)

自动装配Beans之间的依赖关系,只是需要依据xml的配置文件语法。

<beans> default-autowire 所有bean生效

  • <bean> autowire 单个bean生效
<!--通过设置可以将Bean排除在自动装配之外-->
<bean id="" autowire-candidate="false"/>

<!--除此之外,还可以在beans元素中指定,支持模式字符串,如下所有以abc结尾的Bean都被排除在自动装配之外-->
<beans default-autowire-candidates="*abc"/>

​创建Bean的3种方式:

1.使用构造器创建,不使用构造器就会调用Bean类的无参构造来创建实例

2.使用静态工厂创建,必须指定class属性,就是静态工厂类;必须指定factory-method使用哪个静态工厂方法

3.调用实例工厂方法创建,与静态类似,只是需要工厂实例

post--构造后的拦截处理器handler

  • Bean-post handler 本质也是一个bean,不对外服务;注册Bean后,该handler自动启动
  • 容器-post handler

Bean-post handler:需要实现接口BeanPostProcessor的两个方法

postProcessBeforeInitialization,postProcessAfterinitialization


Spring 零配置支持,本质只是调用内部程序自动完成上述,而这不冲突,以上配置内容为准

Annotation

@Component:标注一个普通Spring bean

@Controller 标注控制器 

@Service 标注Service层

@Repository 标注基础DAO组件类 

标注后,需要在spring配置中设置扫描的包范围

<context:component-scan base-package="***。XXX。"

@Resource 属于JavaEE规范,Spring就直接借鉴了,用于为目标Bean指定协作Bean

本质是它与<property />元素中的ref属性等同

它不仅可以修饰setter,也可以修饰实例变量

修改实例变量后,就不需要写setter,直接按照JavaEE规范进行Field注入

@PostConstruct  也是JavaEE规范的标注,Spring也是直接拿来借鉴,用来定制Spring 容器中Bean的初始化生命周期行为

@preDestroy  也是JavaEE规范的标注,Spring也是直接拿来借鉴,用来定制Spring 容器中Bean的销毁前生命周期行为

可以修饰方法,不需要任何属性

Spring 4.0之后的增强版

@Autowire 指定自动装配

可以修饰setter,普通方法,实例变量,构造器等

默认用byType自动装配策略,但是这种情况下,符合要求的Bean会很多,可能冲突

采用@Qualifier可以更加精确,可以加入Bean的id

@Resource 是 javax.annotation.Resource包下,是JavaEE支持的;

@Autowired 是org.springframework.beans.factory.annotation.Autowired 包下,是spring提供的,

这会导致@Resource 的可扩展性优于 @Autowired,

因为在导出一个项目时,使用 @Resource 注解,可以通过Java环境提供,而使用 @Autowired 注解的,需要额外引入spring包。

举报

相关推荐

0 条评论