Spring

依赖注入(DI)定义:
在运行时,由外部容器动态地将依赖对象注入到组件中。

ioc 与 di 的区别:
1.IOC 与DI 描述的是同一件事;
2.IOC 强调的是将对象的创建权 反转 IoC 容器中
3. DI 强调 IoC容器将对象的依赖关系,动态注入到对象之中 ,DI是控制反转具体的实现过程。
spring 的模块:
1》Sprin 核心容器:
管理 spring 应用中 Bean的创建,配置和管理。该模块包括了springBean 工厂,为 spring提供了DI
功能。
2》.AOP:
面向切面编程。是面向对象编程的一个补充
3》.数据 访问与集成
spring JDBC 对原来的代码提供了封装, spring 还提供了 ORM模块 ,可以对众多 ORM框架 集成。
4》 WEB 与远程调用:
spring 可以与多种 MVC框架 集成,例如: struts,JSF等 spring本身提供了springMVC, 后面会相继
的学习。
5》 Instrumentation
JVM添加 代理功能。
6》测试
   spring提供 了测试模块,以致力于 spring应用的测试。
spring 重要性:
WEB 开发的框架技术有 SSH ( Struns + spring + hibernate ), SSM ( SpringMVC + spring + Mybatis), 因此无论日后的开发用那套架构,都要用到 spring ,可见 spring的重要性。并且 spring贯穿了我们WEB开发 的三层 ,将 web层,service层,dao层和PO层 ,无缝整合
什么是Spring:
spring是 一个 开源的 ,轻量级 的控制反转( Inversion of Control,IoC) 和面向切面( AOP )的容器框
. 用来配置 bean,并 维护 bean之间 的关系。
什么是反转(IOC):
就是应用本身不负责依赖对象的创建和维护,依赖对象的创建和维护是由外部容器负责的。这样控制权就移交给了外部容器, 控制权的转移 就是控制反转 (IOC)
Spring容器的功能:
配置 bean, 并维护 bean 之间的关系。
bean是什么:
java 中任何一种对象,可以是一个 javabean/service/action/dao/ 数据源。
搭建 spring 环境( H elloWorld ):
1. spring的下载:
spring的 官网下载地址: https://github.com/spring-projects/spring-framework
2.创建 工程,加载 jar包:
如果用 spring的 基本功能,只用核心容器的 jar包 即可: spring-beans-4.0.4.RELEASE.jar,
spring-core-4.0.4.RELEASE.jar,
spring-context-4.0.4.RELEASE.jar, 
spring-expression-4.0.4.RELEASE.jar,
和spring依赖的jar包和其它的jar包:commons-logging.jar,  junit.jar,
 log4j-1.2.17.jar
即可
3.spring的配置文件模板:
该配置文件可以从 spring的参考 手册或者是 spring的例子中得到。
配置文件的取名可以任意,文件可以放在任何目录下,但是考虑到通用性,
一般放在类的根路径下。
4.schema文件:
< beans   xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-
beans.xsd" >
A) xmlns ,表示的命名空间,表示使用所有标签的默认命名空间
B xmlns:xsi:
声明XML Schema 实例,声明后就可以使用 schemaLocation 属性了
 
声明前缀为 C ontext 的命名空间,后面的 URL 用于标识命名空间的名称,作用就是赋予命名空间一个唯一的名称,
D xsi:schemaLocation
定义了 XML Namespace和对应的 XSD(Xml Schema Definition)文档的位置的关系。 它的值由一个或多个 URI引用对组成,两个URI之间以空白符分隔(空格和换行均可)。第一个URI是定义的 XML Namespace的值,第二个URI给出Schema文档的位置,Schema处理器将从这个位置读取Schema文档, 该文档的 targetNamespace必须与第一个URI相匹配
5.创建并且 配置 java Bean:
6. 传统方式调用 HelloWorld :
  main方法中,new一个实例,调用他的set,和printHello() 方法
7. spring 调用 HelloWorld:
8.实例化spring容器有三种方式:
方法一:
在类路径下寻找配置文件来实例化容器

                    ApplicationContext   context =new ClassPathXmlApplicationContext(Spring XML名称);


方法二:
在文件系统路径下寻找配置文件来实例化容器
                      applicationContext= new FileSystemXmlApplicationContext("绝对路经"); 
  方法三:

XmlWebApplicationContext web中加载 ,当 tomcat启动的时候就会自动加载
2.实例化 容器时, spring配置文件可以指定多个,通过String数组 引入
             applicationContext= new ClassPathXmlApplicationContext(new String[]{"文件名,文件名..."});
3.从spring容器中得到bean
spring容器启动后, 因为 spring容器可以管理bean对象的创建,销毁等生命周期,所以我们只需从容器中直接获取bean对象就行 ,代码如下:
  xml文件中<bean id="" name="" class="实现类/实体类全限定类名">(id与name两种命名之间的区别:)
1.id 与name一样都是命名
2.id与name一样不可重复
3.id只可以用一个别名
4.name可以有多个命名
匿名:
<bean class =" 实现类或实体类的全限定类名 "></bean>
不需要写id属性测试或者运用时 方法 的参数要写为 class
getBean (" class内容 ")
非注解的属性中注入:
id:命名;
class:实体类或实现类的全限定类名;
index:序号;
name:属性名;
type:类型;
value:值;
Set属性注入:
<bean id="" class="">
<property name="" vslue=""></property>
</bean>
<bean id="" class="">
<property name="">
<value> </value>
</property>
</bean>
《简版:
格式:p:属性名="值"
<bean id="" class=""
p:name="" p:age="">
</bean>
构造器属性注入:
<bean id="" class="">
<constructor-arg index="" type="" value=""></constructor-arg>
</bean>
《简版:
格式:c:属性名="值"
<bean id="" class=""
c:name="" c:age="">
</bean>
引用其他注入:
ref:应用的id命名;
<bean id="buser" class="dao.buser">
<property name="user" ref="u"></property>
</bean>
《简版:
格式:c:属性名-ref="引用id命名"
<bean id="cuser" class="dao.buser"
c:user-ref="u"></bean>
自动注入:
<bean id="letterservicelmpl" class="letter.service.LletterServiceImpl"
autowire="constructor">
</bean>
autowire:自动注入;
constructor: 构造器自动注入
在根据构造器参数的类型去查找依赖对象,类似于 byType;
如果存在多个该类型的bean,也会报错
如果没有成功注入(也就是说没有找到同类型的bean) ,
会自动按照byName的方式注入;
byType: Sat注入的方式自动注入
在Spring容器中根据属性的类型查找接口所有的实现类;
并用set注入的方式注入依赖对象
如果存在多个该类型的bean(id名称),就会报错(运行时报错)
(即 接口有多个实现类被 Spring 同时管理,也会报错,同样是运行时报错)
如果没有存在该类型的bean,就不会注入任何东西;
byName: set注入的方式自动注入
在Spring容器中根据属性的名称(id="名称")查询对应的bean
找到则用set注入的方式注入依赖对象;
如果没有找到与servlce 层属性名相同的的bean(找id名),将不注入任何东西;
default: 父级标签的定义注入
采用父级标签(即beans的 default-autowire属性)的配置
default-autowire=“default/”
通过bean类的自省机制(introspection)
来决定是使用 constructor 还是byType 的方式进行自动装配
如果发现默认的构造器,那么将使用 byType 方式;
no: 关闭自动注入

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值