前言:
学习完了mybatis之后,开始了spring的学习。
学习mybatis做的笔记如下:
https://blog.csdn.net/qq_39627843/article/details/103186701
准备工作:
建立maven工程,去pom文件写jar包坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
在resources目录下建一个叫bean.xml的文件,内容如下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="UserService" class="com.bowen.service.UserService"></bean>
</beans>
这里的意思是,我们注册了一个userService的全限定类名,有一个id属性,通过id,我们以后就可以拿到一个这个对象
目录结构如下
然后ui包里面的client调用了userservice的方法,这里就是使用到spring的地方
client类如下:
package com.bowen.ui;
import com.bowen.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {
public static void main(String[] args) {
//UserService service = new UserService();
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
UserService userService = (UserService) context.getBean("UserService");
userService.print();
}
}
使用注解开发:
看到网上写的很好的一篇博客,推荐一下,我也正处于学习阶段,还是得多学习下别人的才行
https://www.cnblogs.com/xzh0717/p/10843370.html
第一部分:这一步其实是从xml配置到注解的过渡,中间还是使用了xml配置,下一部分完全摆脱了xml配置
之前在使用xml配置bean的时候命名空间和注解开发不一样,这里附上:
<!--注解使用的头-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--xml配置使用的头-->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd">
①创建类对象
几种注解如下:
@Component 写在某个类前面,表示将类加入到spring容器中,到时候可以由一个值 通过spring内部的反射机制获取到类对象,这个注解可以传入参数,表示通过哪一个值可以获取到这个类对象,如果不写,默认值是当前类的类名,首字母小写。
下面三个功能其实差不多,只不过一般分别用在相应的层,如果非要用在其他层也是可以的
@Controller 用在控制层
@Service 用在业务层
@Repository 用在持久层
②注入数据
@Autowired 自动按照类型注入,可以写在类变量上,也可以写在方法上,机制是通过类型与容器中的类型匹配,如果有多个类
型匹配,则再按照变量名匹配。比如说
@Qualifier 类型有多个匹配时,Qualifier里面的值指定它应该注入哪一个id对应的类。比如这样
有两个accountDao都加上了Component注解,存在于容器中,AccountDao1 和 AccountDao2,那么现在是不知道用谁的,而qualifier里面的值就能指定用accountDao1
注意:
注解在类变量上时,必须与@Autowired一起使用
@Resource 直接通过id指定,不需要与其他注解一起使用
以上三个注解只能注入其他数据类型,就是自己定义的类,对于基本数据类型以及String类型,不能注入,另外,集合类型只能用xml方式进行注入
基本数据类型的注入需要使用@Value注解。
@Scope scope注解可以定义bean的作用域,具体解释如下
使用时,注解里面加上这些就可以了,例如在某个类的前一行加上@Singleton,之后这个类就只会被创建一次
第二部分
全部使用注解来进行开发,不使用任何xml配置文件
首先我们要建一个类,替代刚才xml配置文件的功能,位置和名称都随便。建完之后在类的前一行加上@Configuration注解,表示这是一个配置的类,spring会区分,再加上@ComponentScan,表示扫描哪一些包里面的注解。