1.IOC容器简介 (1)org.springframework.beans与org.springframework.context这两个包是SpringIOC容器的基础,在org.springframework.beans中的BeanFactory接口提供了一种能够管理任何类型对象的机制(类似于一个工厂,里面放满了需要被管理的对象),而在org.springframework.context中的BeanFactory的子接口ApplicationContext则在其基础之上提供了更多特性(如AOP,Messageresource,Eventpublication等)。总而言之,BeanFac...

  oTtxkpRl76Le   2023年11月01日   115   0   0 Java

1.Bean概述 (1)SpringIoC容器管理一个或多个bean,这些bean是根据我们所提供的配置元数据来创建的,在容器内部,BeanDefinition对象就代表了bean的配置元数据,它主要包含了如下几个方面的内容: 属性 说明 Class 全限定类名 Name bean的名称 Scope bean的作用域 Constructorarguments 构造函数参数 Properties 成员变量属性值 AutowiringMode 自动装配模式 Lazyinitializationmode 懒加载模式 InitializationMethod ...

  oTtxkpRl76Le   2023年11月01日   37   0   0 Java

1.依赖注入 (1)依赖注入(DI)的概念:某个bean的依赖项,由容器来负责注入维护,而非我们自己手动去维护,以此来达到bean之间解耦的目的,如下 //情况一:不使用依赖注入 publicclassA{} publicclassB{ //B依赖了A对象,这种依赖关系是由我们自己手动来维护的,编码于代码之中,是强依赖 privateAa=newA(); } //情况二:使用依赖注入 @Component publicclassA{} @Component publicclassB{ //B依赖了A对象,这个A对象是由容器来提供的,无需我们关心 @Autowired privateAa;...

  oTtxkpRl76Le   2023年11月01日   58   0   0 Java

3.depends-on (1)depends-on用来表示一个bean的实例化依靠另一个bean的先实例化,如果在一个beanA上定义了depends-onbeanB就表示:beanA实例化前先实例化beanB。 <!-例一--> <beans...> <!-对于下面这俩个bean,谁先谁后创建不能确定--> <beanid="exampleA"class="cn.example.spring.boke.ExampleA"></bean> <beanid="exampleB"class="cn.example.spring.b...

  oTtxkpRl76Le   2023年11月01日   50   0   0 Java

1.Bean的作用域 (1)Bean的作用域即Bean实例的作用范围,Spring支持6种bean的作用域,其中4种只能在web环境中使用,具体如下 作用域 描述 singleton 默认作用域,采用单例模式,Spring只会创建一个该bean实例,每次请求时Spring返回的都是同一个bean实例 prototype 采用原型模式,Spring会创建多个该bean实例,每次请求时Spring返回的都是一个新的bean实例 request 仅用于web环境,Spring会为每次Http请求创建一个新的bean实例 session 仅用于web环境,Spring会为每个...

  oTtxkpRl76Le   2023年11月01日   54   0   0 Java

1.生命周期回调 (1)如果我们想要介入bean的生命周期,可通过实现spring中的InitializingBean和DisposableBean接口来达到这一目的,spring会调用InitializingBean中的afterPropertiesSet()以及DisposableBean中的destroy()方法来执行bean在初始化和销毁时所要执行的行为,此外JSR-250规范中的@PostConstruct和@PreDestroy注解也同样对springbean适用,它们也可以指定bean的初始化或销毁方法,且不与spring框架强耦合,同时如果不想使用JSR-250注解,也可通过配...

  oTtxkpRl76Le   2023年11月01日   52   0   0 Java

1.BeanDefinition继承 (1)Spring中的bean存在层级关系,我们可以定义子bean来继承或覆盖父bean中的某些属性,从而节省编码,在此处Spring运用到了模板设计模式,如下所示 //自定义了2个bean,ExampleA和ExampleB,注意,它们之间不存在继承关系,我们这里的继承注意是BeanDefinition继承,也就是一个bean的一些属性值可能跟另一个bean的某些属性值相同,然后通过BeanDefinition继承来减少编码,复用一下属性值,仅此而已 publicclassExampleA{ privateStringname; privateint...

  oTtxkpRl76Le   2023年11月01日   50   0   0 Java

1.通过BeanPostProcessor来自定义bean (1)BeanPostProcessor用于在容器完成了对bean的实例化,配置及初始化后来实现一些自定义逻辑,它是用于操纵由容器创建的每个bean实例的,即在容器实例化了一个bean后以及该bean的初始化回调(如InitializingBean.afterPropertiesSet()等)被执行之前,会将这个bean交由BeanPostProcessor来进行处理。通过BeanPostProcessor,我们可以对bean实例进行任何操作,包括忽略掉后续的初始化回调等,BeanPostProcessor通常用来检查回调接口,或用来...

  oTtxkpRl76Le   2023年11月01日   88   0   0 Java

1.基于注解的配置与基于xml的配置 (1)在xml配置文件中,使用<context:annotation-config></context:annotation-config>标签即可开启基于注解的配置,如下所示,该标签会隐式的向容器中添加ConfigurationClassPostProcessor,AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor,RequiredAnnotationBeanPos...

  oTtxkpRl76Le   2023年11月01日   61   0   0 Java

1.@Component注解与其衍生注解 (1)在Spring中,@Component注解用于说明某个类是一个bean,之后Spring在类路径扫描过程中会将该bean添加至容器中;@Component注解还有很多衍生注解,如@Repository,@Service和@Controller,它们分别用于三层架构中的持久层,业务层和控制层,因此,对于一个业务层的普通Service类,一般情况下用@Component或@Service都是可行的,但更推荐用@Service注解,因为该注解不仅能清晰的指明被标注的类是一个业务类,此外,这些注解还是SpringAOP的理想切入目标,能方便的对某一层进行...

  oTtxkpRl76Le   2023年11月01日   66   0   0 Java

1.使用@Inject和@Named进行依赖注入 (1)Spring提供了对JSR330标准注解的支持,因此我们也可以使用JSR330标准注解来进行依赖注入,不过,在此之前,我们得先使用maven添加相关依赖,如下 <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> (2)JSR330标准注解提供了@Inject注解...

  oTtxkpRl76Le   2023年11月01日   113   0   0 Java

1.@Bean与@Configuration (1)标注于类之上的@Configuration注解与标注于方法之上的@Bean注解是支持基于Java的容器配置的核心,被@Bean注解标注的方法用于实例化bean并将其注入至容器中,它与基于xml配置中的<bean/>标签起着相同的作用,@Bean可用在任何被@Component注解标注的类中,不过绝大部分情况下它们都被用于被@Configuration注解标注的类中;被@Configuration注解标注的类通常作为bean的定义源,如同基于xml配置中的<beans/>标签,此外,还可在@Configuration标注...

  oTtxkpRl76Le   2023年11月01日   89   0   0 Java

1.profiles (1)profiles提供了一种在不同环境(Environment)下注册不同的bean的机制,如下 //假定现在我们存在开发和生产两个环境,每种环境下ExampleA所需的url都是不同的,那么我们就可以使用@Profile注解,来声明在哪种环境下该注入哪种bean @Configuration publicclassConfig{ //development环境下注入该bean @Bean @Profile("development") publicExampleAexampleAForDevelopment(){ returnnewExampleA("http:/...

  oTtxkpRl76Le   2023年11月01日   70   0   0 Java

1.使用MessageSource (1)有时,我们的项目可能会面临国际化需求,例如:对不同国家的人,我们需返回不同语言的消息,而java本身已经给我们提供了ResourceBundle类实现国际化的需求,如下 //在resources目录下,新建两个配置文件,分别为message_en_us.properties和message_zh_cn.properties,内容如下 //message_en_us.properties文件中配置如下 country=us //message_zh_cn.properties文件中配置如下,注意对中文使用unicode编码 country=\u4e2...

  oTtxkpRl76Le   2023年11月01日   128   0   0 Java

1.rtsp视频流网页播放概述 需求:当我们通过ONVIF协议,获取到了摄像头的rtsp流地址(长这样:rtsp://admin:123456789@192.168.9.16:554/cam/realmonitor?channel=1&subtype=1&unicast=true&proto=Onvif)后,通过vlc播放器,我们可以查看监控视频内容,可是,我们应该如何在网页上查看视频内容呢?因为现在的浏览器都不支持rtsp流,因此我所选用的解决方案便是推流+转码 (1)转码推流工具ffmpeg(安装教程详见:https://www.cnblogs.com/h22854...

  oTtxkpRl76Le   2023年11月01日   86   0   0 Java

1.AOP简介 (1)Spring的关键组件之一就是AOP框架,它是对SpringIoC的补充(这意味着如果我们的IOC容器不需要AOP的话就不用引入AOP),此外,AOP亦是对OOP的补充,OOP的关注点在于类,而AOP的关注点在于切面,它可以将分散在不同类不同方法中重复的代码逻辑抽取出来,称之为通知(Advice),然后在运行时通过动态代理技术将“通知”组合进原有对象中,这样就能在实现原有预期效果的情况下达到减少代码冗余的目的 (2)在Spring中,AOP主要用于两大方面,一是提供了声明式服务(比如声明式事物管理:@Transactional注解),二是让用户实现自定义切面,实现代码解偶...

  oTtxkpRl76Le   2023年11月01日   81   0   0 Java

1.@Aspect注解 (1)@Aspect注解用于声明一个切面类,我们可在该类中来自定义切面,早在Spring之前,AspectJ框架中就已经存在了这么一个注解,而Spring为了提供统一的注解风格,因此采用了和AspectJ框架相同的注解方式,这便是@Aspect注解的由来,换句话说,在Spring想做AOP框架之前,AspectJAOP框架就已经很火了,而直接把AspectJ搬过来又不现实,因此,Spring想了一个折中的方案,即只使用AspectJ框架的声明,写法和定义方式(比如@Aspect注解),而底层由Spring自己实现,这样,就避免了我们程序员从AspectJAOP切换到Sp...

  oTtxkpRl76Le   2023年11月01日   38   0   0 Java

1.声明schema,导入命名空间 (1)如果我们想要使用基于xml的springaop,那么,第一步,我们需要在xml配置文件中声明springaopschema,导入命名空间,如下这是一个标准的模板 <?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.or...

  oTtxkpRl76Le   2023年11月01日   85   0   0 Java

1.选择哪种AOP (1)使用SpringAOP比使用完整版的AspectJ更方便简单,因为不需要在开发和构建过程中引入AspectJ编译器以及织入器,如果我们只希望通知能够在SpringBean上执行,那么选用SpringAOP就可以了,如果我们希望通知能够在不由Spring所管理的对象上执行,那么就需要使用AspectJ,如果我们希望为除方法以外的连接点(比如成员变量)提供通知,那么也需要使用AspectJ 2.SpringAOP的代理机制 (1)SpringAOP使用Jdk动态代理或Cglib动态代理来为目标对象创建代理对象,Jdk动态代理由Jdk提供,而Cglib动态代理则是由一个开源...

  oTtxkpRl76Le   2023年11月01日   65   0   0 Java

注:该章节主要为原创内容,为后续的SpringMVC内容做一个先行铺垫 1.Servlet的构建使用 (1)选择Maven->webapp来构建一个web应用 (2)构建好后,打开pom.xml文件,一要注意打包方式为war包,二导入servlet依赖,如下 <!-打war包--> <packaging>war</packaging> <!-导入servlet依赖--> <dependencies> <dependency> <groupId>javax.servlet</groupId>...

  oTtxkpRl76Le   2023年11月01日   43   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~