发表于: 2017-02-22 01:21:09
2 1909
一。今天完成的:
1.解决昨天装配Bean报错的问题,不再报错但返回id都为0;
2.继续学习了Bean容器的一些知识
3.学习mybatis和log4j基础,实践了一个简单的log4j用例;
如图
二。明天计划的事情
1.解决今天遇到的问题
2.继续学习mybatis和log4j,至少要把log4j应用到任务项目中去,争取应用mybatis;
3,学习spring MVC
三。今天的收获
1.Bean实例初始化两种方法:
①.实现org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法
②.配置init-method
2.Bean销毁的两种方法
①.实现org.springframework.beans.factory.InitializingBean接口,覆盖destroy方法
②.配置destroy-method=”方法名”
3.配置全局默认初始化方法,销毁方法:
在<beans xmlns=……后面添加init-method和destroy-method>(在bean外,beans内)
(当一个bean设置了实现org.springframework.beans.factory.InitializingBean接口方法或在bean里配置了初始化销毁方法时就不再调用默认方法)
4.Classpath扫描与组件管理
从Spring3.0开始,Spring JavaConfig项目提供了很多特性,包括使用java而不是XML定义bean,比如@Configuration,@Bean,@Import,@DependsOn
@ Component是一个通用注解,可用于任何bean
@Respository通常用于注解DAO类,即持久层
@Service通常用于注解Service类,即服务层
@Controller通常用于注解Controller类,即控制层(MVC)
5.类的自动检测及bean的注册
为了能够检测到这些类并注册相应的bean,需要在xml文件中添加<context:component-scan>,它包含了<context:annotation-config >,所以我们一般使用<context:component-scan>
默认情况下,类被自动发现并注册bean的条件是:使用@Component, @ Respository, @Service, @Controller或者使用@component的自定义注解
还可以通过过滤器修改上面的行为
还可以使用use-default-filters=”false”禁用自动发现与注册
扫描过程中组件被自动检测,那么bean名称是由BeanNameGenerator生成的,通常生成规则以类名为基础,第一字母小写定义的(我们也可以自动以bean命名策略,实现BeanNameGenerator接口,并一定要包含一个无参数构造器)
6.通常情况下自动查找的spring组件,其scope是singleton,
7. @Required和@Autowired区别(@Autowired比较常用)
@Required注解适用于bean属性的setter方法
这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在bean定义或通过自动装配一个明确的属性值
@Autowired注解用途更广,既可以用在setter方法上也可以用在构造器或成员变量上
通过设置@Autowired(required=false)避免因找不到合适的bean导致的autowiring失败抛出异常
每个类只能有一个构造器被标记为required=true
@Autowiredd必要属性建议使用@Required
8.mybatis是什么?
①刚接触mybatis被一堆没见过的关键字搞懵逼了,硬着头皮学下去,简单理解到mybatis是用于替换DAO层,有了mybatis,可以不用在类中写sql语句代码;
②用mybatis之后sql写在哪里?
1.通过配置xml文件2.通过注解的方式;推荐用第一种方式
③如何实现DAO接口?
1.内部通过mapper机制自动实现DAO接口2.通过API编程方式实现
实际开发中建议使用Mapper自动实现方式;
9.log4j是一个强有力的日志操作包;简单理解log4j就是:它就是一个类似于打印语句的封装包,而且功能较之打印强大的多!
log4j应用到任务项目中,步骤应该是引入log4j依赖包,创建log4j.properties文件,获取日志记录器,读取配置文件,使用Logger.debug(“”)就可以替代System.out.println()方法啦!
四。遇到的问题
1。测试类不报错但是学生注册后返回的的ID不对!为什么注册学生返回ID都是0?我调用了student的getid()方法呀?调用student的getname()方法是成功的,为什么调用getid()方法就返回的都是0?数据库里ID一直都是设置为自增长的.
测试类代码如下
服务层代码:
2。对于log4j中配置监听器内容难以理解,感觉log4j虽然是个小东西但也包含很多自己没接触的东西;
评论