一.Spring概念
1.是一个开源的轻量级框架
2.spring核心主要两部分
(1)aop:面向切面编程,扩展功能不是修改代码实现
(2)ioc:控制反转:把对象的创建不通过new的方式,而是交给spring配置创建对象
3.spring是一站式框架
在javaee的三层结构中,每一层都提供不同的解决办法
web层:springMVC
service:spring的ioc
dao层:spring的jdbcTemplate
4.ioc
1)把对象的创建交给spring管理
2)ioc操作两部分
A.ioc的配置文件方式
B.ioc的注解方式
3)底层原理(搞内聚低耦合)
A.底层使用技术
a.xml配置文件
b.dom4j解决XML
c.工厂设计模式
d.反射
4)配置文件步骤
A:spring核心配置文件名称和位置不是固定的,建议放到src下面,官方建议名称为applicationContext.xml
B:引入schema约束
5.Bean管理——配置文件方式
(1)Bean实例化方式三种
A:使用类的无参构造创建(重点)
B:使用静态工厂创建:创建静态方法返回对象
C:使用实例工厂创建:不是静态方法,而是创建类的对象来返回
(2)Bean标签常用属性
id:起名称,id属性值名称任意命名,不能包含特殊符号。根据id得到配置对象
class:创建对象所在类的全路径
name:功能和id属性一样,id属性不能包含特殊符号,但是再那么属性值里面可以包含特殊符号,基本不用了。
scope:包含以下值
singleton:默认值,单例,只有一个对象
prototype:多例
request:创建对象把对象放到request里面
session:创建对象把对象放到session里面
globalSession:创建对象把对象放到globalSession里面
(3)属性注入:创建对象的时候向类里面的属性设置值
A:Java中的属性注入方式 三种
a.使用有参构造方法注入
b.使用set方法注入
c.使用接口注入
B:配置文件注入类中属性值,只支持上面a、b两种方法
a.使用有参构造方法注入,使用constructor-arg标签 ,name属性表示成员变量名,value表示要传入的值
b.使用set方法注入,使用property标签,name属性表示成员变量名,value表示要传入的值
C:注入对象类型属性(重点)
若A类中含有B类的对象,用ioc来实现的方法
a.在A中把B作为类型属性
b.生成B类型的set方法
c.在配置文件中注入对象属性,在A中添加属性标签property,name属性表示成员变量名,ref表示类B类配置bean标签中的id值
D:注入复杂数据
a.数组类型:使用property标签下的list标签下的value标签对数组赋值
b.List集合:使用property标签下的list标签下的value标签对List集合赋值
c.map集合:使用property标签下的map标签下的entry标签对map集合赋值,key是键value是值
d.properties:使用property标签下的props标签下的prop标签对properties赋值,key是实体中的键
E:IOC和DI区别
IOC:控制反转,把对象的创建交给spring管理
DI:依赖注入,向类中的属性进行注入值
关系:依赖注入不能单独存在,需要在IOC基础上完成操作。
6.Spring整合Web项目原理
(1)加载spring核心配置文件
new对象,功能可以实现,效率很低
(2)实现思想:要把加载配置文件和创建对象过程在服务器启动时完成
(3)实现原理:
A:ServletContext对象
B:监听器
(4)具体流程
A.在服务器启动时,系统为每个项目创建一个ServletContext对象
B.在ServletContext对象创建的时候使用监听器可以监听到ServletContext对象在什么时候创建
C.监听到ServletContext创建时,项目加载spring配置文件,把配置文件中的配置对象进行创建
D.把创建出来的对象放在ServletContext域对象里面(setAttribute()方法)
E.获取对象时,到ServletContext域得到对象(getAttribute()方法)
7.Bean管理——注解方式
(1)注解:代码里面的特殊标记,使用注解可以完成功能
注解写法:@注解名称(属性名称=属性值)
注解可以使用在类、方法和属性上面
(2)步骤:
A.导入jar包,包括基本spring包还有一个注解包
B.创建类,属性和方法
C.创建配置文件,引入约束,开启注解扫描
D.注解创建对象 4个注解
@Component(vlaue=”user”) //和< bean id=”user” class=”“>效果一样,user表示对象名
@Controller:web层
@Service :业务层
@Repository :持久层
4个效果是一样的,用法也一样。
E:创建单实例对象
@scope(value=”singleton”) //singleton默认值,单实例 、prototype多实例 其他用法见配置文件方式
(3)属性注入
A.@Autowired自动注入
B.@Resourse(name=”user”) :name表示赋值,如果注入对象类型,则和注解创建对象的value值要相同或者配置文件方式创建对象的id相同
注:使用注解方式,A类中不需要设置B类对象属性的set方法,标签自动注入
(4)注入对象类型属性
若A类中含有B类的对象,用注解方式来实现
A:创建A类和B类
B:注解方式创建A、B类的对象
C:在A类中定义B类型属性,用注解标签注入该对象属性
7.配置文件和注解混合方式
创建对象都是使用配置文件方式,注入属性都是用注解方式
javaEE笔记
最新推荐文章于 2024-04-20 19:08:44 发布