发表于: 2020-05-08 20:47:06
1 1525
今天完成的事情:注解方式注入,log4j的配置以及
一、注解的种类:
1、创建对象
2、注入数据
3、改变作用域
4、和生命周期相关
1、创建对象的在xml配置文件中编写一个<bean>标签实现的功能是一样的
@Component:
作用:用于把当前类对象存入spring中容器中
属性:value 用于指定bean的id ,若不写,则默认值是当前类名,且首字母改小写
以下三种注解的作用与属性 跟@Component是一样的,他们是Spring框架为开发者提供明确的三层使用的注解,使三层对象更清晰
@Controller 一般用于表现层
@Service 一般用用业务层
@Repository 一般用于持久层
2、注入数据的 在xml配置文件中的bean标签写一个<property>标签的作用是一样的
@Autowired
作用:自动按照类型注入。只要容器中有唯一的一个bean对象类型和要注入的变量类型匹配,就可以注入成功
如果IOC容器中没有任何bean的类型和要注入的变量类型匹配,则报错
出现位置:可以是变量上,也可以是方法上(在使用注解注入时,set方法不是必须的)
@Qualifier
作用:在按照类中注入的基础之上再按照名称注入。它在给类成员注入时不能单独使用。但是在给方法参数注入时可以
属性:value 用于指定注入bean的id
@Resource
作用:直接按照bean的id注入,它可以独立使用
属性: name 用于指定bean 的id
以上三个注入都只能注入其他bean类型的数据,而基本类型和String类型无法使上述注解实现。另外,集合类型的注入只能通过xml来实现
@Value
作用:用于注入基本类型和String类型的数据
属性:value 用于指定数据的值。它可以使用Spring中Sqel的写法:${表达式}
3、改变作用域的 在bean标签中使用scope属性实现的功能是一样的
@Scope
作用:用于指定bean的作用范围
属性:value 指定范围的取值。常用取值: singleton prototype
4、和生命周期相关(了解)在bean标签中使用init-method 和 destroy.method 的作用是一样的
@PreDestory
作用:用于指定销毁方法
@PostConstruct
作用;用于指定初始化方法
二、配置log4j文件
1、导入依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
2、在src目录下创建log4j.properties配置文件
### 设置 ERROR、WARN、INFO、DEBUG ###
log4j.rootLogger = info,A,B,C
### 输出信息到控制抬 ###
log4j.appender.A = org.apache.log4j.ConsoleAppender
log4j.appender.A.Target = System.out
log4j.appender.A.layout = org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到 ###
log4j.appender.B = org.apache.log4j.DailyRollingFileAppender
log4j.appender.B.File = E:/java/log4j/logs/log.log
log4j.appender.B.Append = true
log4j.appender.B.Threshold = DEBUG
log4j.appender.B.layout = org.apache.log4j.PatternLayout
log4j.appender.B.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.C = org.apache.log4j.DailyRollingFileAppender
log4j.appender.C.File =E:/java/log4j/logs/error.log
log4j.appender.C.Append = true
log4j.appender.C.Threshold = ERROR
log4j.appender.C.layout = org.apache.log4j.PatternLayout
三、Spring整合Junit
1、Junit单元测试中,没有main方法也能执行
junit 集成了一个main方法
该方法就会判断当前测试类中哪些方法有@Test注解
junit就让有Test注解的方法执行
2、Junit不会管我们是否采用Spring框架
在执行测试方法时,junit不知道是否使用了spring框架,所以也就不会读取配置文件/配置类创建spring核心容器
由此可知当测试方法执行时,没有IOC容器,就算写了Autowired注解,也无法实现注入
①、导入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
②、使用Junit提供的一个注解把所有的main方法替换成spring提供的@Runwiith
③、告知spring的运行器,spring和ioc创建是基于xml还是注解的,并且说明位置@ContextConfiguration
location:指定xml文件的位置,加上classpath关键字,表示在类路径下
classes:指定注解类所在位置
Spring这块儿知识很重要,我担心自己学的不够扎实,就去看了视频,可能是因为视频讲的太细了,把我搞晕了(基础太差,讲的一些名词都没听过)觉得自己搞的有点快,好多东西现在都想不起来了,于是回头把自己之前的日报又都看了一遍,好好消化了一下。感觉今天没学到什么东西,有些知识甚至只是为了回头看的时候再细想下而写的。
明天计划的事情:学习Spring-Mybatis 准备看看代码命名规范,尝试编写任务一代码。
评论