spring java工程_spring开发java程序

Spring的核心是IOC、AopIOC:控制反转(DI:依赖注入)

IOC(控制反转)也可以称之为DI(依赖注入):

控制反转:将 创建对象、属性值 的方式 进行了翻转,从new、setXxx()  翻转为了 从springIOC容器getBean()

依赖注入:将属性值 注入给了属性,将属性 注入给了bean,将bean注入给了ioc容器;

1.搭建Spring环境

下载jar

http://maven.springframework.org/release/org/springframework/spring/

开发spring至少需要使用的jar(5个+1个):

spring-aop.jar开发AOP特性时需要的JAR

spring-beans.jar处理Bean的jar

spring-context.jar处理spring上下文的jar

spring-core.jarspring核心jar

spring-expression.jarspring表达式

三方提供的日志jar

commons-logging.jar日志

2.编写配置文件

为了编写时有一些提示、自动生成一些配置信息可以增加sts插件

可以给eclipse增加 支持spring的插件:spring tool suite(https://spring.io/tools/sts/all)

下载springsource-tool-suite-x.x.x.RELEASE-e4.7.3a-updatesite.zip,然后在Eclipse中安装:Help-Install new SoftWare.. - Add

建完java项目后,新建bean configuration.. --applicationContext.xml

8537feee9271

8537feee9271

整个工程结构

8537feee9271

applicationContext.xml

8537feee9271

Test.java

8537feee9271

总结:ioc/di ,无论要什么对象,都可以直接去springioc容器中获取,而不需要自己操作(new\setXxx())

因此之后的ioc分为2步:1 先给springioc中存放对象并赋值  2 从容器中拿对象

依赖注入3种方式:

1.set注入:通过setXxx()赋值,默认使用的是 set方法();依赖注入底层是通过反射实现的。

8537feee9271

2.构造器注入:通过构造方法赋值(通过反射调用无参构造)在ioc中定义bean的前提:该bean的类 必须提供了 无参构造

8537feee9271

需要注意:如果 的顺序 与构造方法参数的顺序不一致,则需要通过type或者index或name指定。

3.p命名空间注入

引入p命名空间:xmlns:p="http://www.springframework.org/schema/p"

8537feee9271

8537feee9271

简单类型:

p:属性名="属性值"

引用类型(除了String外):

p:属性名-ref="引用的id"

注意多个 p赋值的时候 要有空格。

自动装配(只适用于 ref类型 ):约定优于配置

8537feee9271

byName: 自动寻找:其他bean的id值=该Course类的属性名

byType:  其他bean的类型(class)  是否与 该Course类的ref属性类型一致  (注意,此种方式 必须满足:当前Ioc容器中 只能有一个Bean满足条件  )

constructor: 其他bean的类型(class)  是否与 该Course类的构造方法参数 的类型一致;此种方式的本质就是byType

可以在头文件中 一次性将该ioc容器的所有bean 统一设置成自动装配:

...

default-autowire="byName">

自动装配虽然可以减少代码量,但是会降低程序的可读性,使用时需要谨慎。

使用注解定义bean:通过注解的形式 将bean以及相应的属性值 放入ioc容器

8537feee9271

8537feee9271

Spring在启动的时候,会根据base-package在 该包中扫描所有类,查找这些类是否有注解@Component("studentDao"),如果有,则将该类 加入spring Ioc容器。

@Component细化:

dao层注解:@Repository

service层注解:@Service

控制器层注解:@Controller

eg:如果不清楚当前是哪层,可以使用@Component,否则可以细化

如何通过注解的方式,给属性赋值

根据类型

8537feee9271

根据名字byName

8537feee9271

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值