第一篇博客(SpringIoC和DI和AOP)

闲聊: 大笑
在毕业后,写了一年多的CRUD后,在老同桌的提点下,出来参加学习提升自己.
在学习一段时间后,又在老同桌的提点下开始写博客,用以记录知识,感悟和Bug.
小目标:
学学大佬们,先定一个小目标:不管多忙,坚持每个自习日和休息日都写一篇博客,直到6鱼粉学习结束;

期望:
希望能通过写博客,帮助自己,更好的理解和梳理知识,复习更有效,找Bug更高效;
完;

正题:SpringIoC和DI和AOP
第一天:SpringIoC和Di
名词解释
SpringIoC:inverse of control 反转控制,就是把创建对象的功能,交给Spring 来管理
DI:dependency injection依赖注入;就是Spring自动注入属性
1/SpringIoC:反转控制
1/Spring中的一切,都叫做bean
2/创建bean的三个步骤:
1/在classpath路径中找到xml配置文件,
Resource resource = new ClassPathResource("applicationContext.xml");
2/根据配置文件创建bean工厂
BeanFactory factory = new XmlBeanFactory(resource);
3/工厂生产对象
HelloWorld world = factory.getBean("helloWorld", HelloWorld.class);
3/bean的实例化方式,推荐使用无参构造器方式:
<bean id="helloWorld" class="类的权限定名" >
2/让JUnit在Spring之下运行,会更加高效
@RunWith(SpringJUnit4ClassRunner.class)
3/bean的初始化能力,和销毁能力
<bean id="someBean" class="类的权限定名"
init-method="init" destroy-method="destroy"/>
4/DI:依赖注入:
1/手动注入:
2/bean的作用域scope,默认是单例
3/简单类型:value
<bean id="emloyee" class="类的权限定名">
<!-- property 表示使用属性注入
name:属性名称
value:属性的值 -->
<property name="id" value="10" />
</bean>
4/复合类型:ref
<property name="employeeServiceImpl" ref="employeeServiceImpl" />
5/集合类型:
<property name="array">
<array>
<value>arr1</value>
<value>arr2</value>
</array>
</property>
6/构造器注入;
7/配置连接池
2/注解注入:
@Autowired贴在字段或者方法上;自动注入DI
@ContextConfiguration,在默认路径找App-context.xml文件
@Component;把该类交给Spring管理
小结:xml常用,因为清晰,可以使用自己写的类;
第二天:SpringAOP
1/Spring的强悍功能之事务处理:
1/JDK动态代理:原理是实现接口,使用反射获取方法
实现InvocationHandler(Java自带的)
2/CGLIB动态代理,原理是继承类;获取方法
实现的InvocationHandler接口(Spring中的)
2/AOP
名词解释: AOP aspect oritention programming 面向切面编程
个人理解:就是写好一些最小的简单方法;当需要使用时,就根据需要构建复杂方法;
作用:降低耦合,提高代码复用;
3/AspectJ语言,其实就是一个表达式;
<aop:pointcut id="pc"
expression="execution(* 类的权限定名.*(..))"/>
4/配置AOP(切入点:where ; 增强 :what 切面=切入点+切面)
注解方式:
@Aspect 告诉Spring这个类有AOP的配置
@Around 增强
xml需要配置三个东西:
1/组件扫描器 2/DI解析器 3/AOP动态代理解析器


遇到的异常
1/NoSuchBeanDefinitionException: No bean named 'someBean' is defined
[没有在主配置文件中,关联子配置文件]
2/no tests found matching
[java代码的包名,和test测试类的包名不一致;并且使用了注解注入的方式,导致test找不到]
3/IllegalStateException : Failed to load ApplicationContext
the setter match the return type of the getter
4/java.lang.IllegalStateException: Failed to load ApplicationContext
无法找到元素<context:component-scan 的声明
缺少xml头的内容(context)
5/同时使用了注解和xml,产生冲突,删除一个即可;

最后,本人学习编程1年多,有很多地方认识还是很浅显,希望各位大神指点,拍砖,吐槽... 奋斗

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值