Spring学习笔记[0],IOC

IOC
容器 被动接受创建好资源

DI
依赖注入 容器能知道 组件在运行时需要哪些组件,通过反射的形式进行注入
只要 容器管理的组件,都能使用容器提供的强大功能

测试核心容器
安装eclipse插件 导包 创建spring配置文件

Class 全类名 Id 唯一标识 Name Value

//通过配置文件取得容器
ApplicaiontContext ioc = new ClassPathXmlApplicationContext(“”)//spring配置文件path
//获得组件
Ioc.getBean(id)
容器如果没有组件 —> NoSuchBeanDefinitionException
同样类型的bean有多个—>NoUniqueBeanDefinitionException
bean的属性abstract设为true,不能被直接创建—>BeanIsAbstractException

有参构造器赋值

</>

不能引用内部bean的id

Bean的作用域

Prototype 多实例的 获取的时候创建
Singleton 单实例的 容器启动时创建
Request
Session

静态工厂


实例工厂


实现FactoryBean接口

带有生命周期的Bean

后置处理器
实现BeanPostProcessor接口
postProcessBeforeInitialization
postProcessAfterInitialization

spring管理连接池

引用外部配置文件
context:property-placeholder/


自动装配

Default/no 不自动赋值
Byname 在容器中 以属性名作为id找组件进行赋值
Bytype 在容器中 以类名作为id找组件进行赋值
Constructor 先按照有参构造器的类型匹配,如果有多个:则用参数名作为id继续匹配

SpEL
#{}
静态方法
T(类名.静态方法)
非静态方法
Id.方法名

注解
导入aop包
@Controller 控制器层
@Service 业务逻辑层
@Repository 数据库层,持久化层,dao层
@Component 给不属于以上几层的组件
spring底层不验证service是不是service 其他同理

组件扫描配置
<context:component-scan base-package=“”></context:component-scan>

Id默认是类名首字母小写 默认单例

改名@Repositroy(“newName”)
多实例 @Scope(value=“protoType”)

扫描时排除一些组件
<context:component-scan base-package=“”>
<context:exclude-filter type=“annotation” expression=“org.spring.Controller”/>
type=“assignable” 类的全类名
Aspects aspectj表达式
Custom 自定义TypeFilter
Regex 正则表达式
<context:include-filter use-default-filter=“false”/>
</context:component-scan>

@Autowired原理
先按照类型去容器找组件
->找到一个
->没找到 —>抛异常
->找到多个 —>按照变量名作为id匹配
—>找到
—>没找到 —>抛异常
@Qualifer(“指定id”)

@Autowired(required=false). —>找不到—>装配null

方法上有@Autowired
Bean创建的时候自动运行,每个参数都自动赋值

@ContextConfiguration(“classpath:applicationContext.xml”)指定Spring配置文件的位置
@RunWith(SpringJUnit4ClassRunner.class)使用Spring的单元测试模块来执行@Test的测试方法

配置监听器
web.xml

contextConfigLocation
classpath:applicationContext.xml

org.springframework.web.context.ContextLoader

通过spring封装的静态方法获取可用容器
WebApplicationContext ioc = ContextLoader.getCurrentWebApplication

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值