发表于: 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配置文件

### 设置 ERRORWARNINFODEBUG ###
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 准备看看代码命名规范,尝试编写任务一代码。






返回列表 返回列表
评论

    分享到