spring技术
spring顾名思义就是春天的意思,但是一年四季,春夏秋冬,只有春,其他三个不要了吗?就是意味着这个框架的到来就是春天,简化了我们平时的挺多java的繁琐,复杂,重复的操作。
spring的核心内容
- IOC容器; 把创建的对象交给spring管理
- AOP; 不修改源代码,功能增强
- IJDBCTemplete ;
- 事务管理;
- Spring5新特性 ;
详细步骤
1.创建maven项目
2.导入spring5相关的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.th</groupId>
<artifactId>mmvn_test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- 传递性 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<dependency>
<groupId>net.sourceforge.cglib</groupId>
<artifactId>com.springsource.net.sf.cglib</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.aopalliance</groupId>
<artifactId>com.springsource.org.aopalliance</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>com.springsource.org.aspectj.weaver</artifactId>
<version>1.6.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.6.RELEASE</version>
</dependency>
</dependencies>
</project>
3.创建一个普通类,编写一个普通方法。
4。创建spring配置文件。
<?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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="com.th.test1.User"></bean>
</beans>
注:spring的配置文件都是含beans的。
5.测试类
综上所述,一个最简单的 spring小demo就实现了。
Ioc
概念: 翻译过来就是控制反转的意思,就是不用一直不停的去对象创建和对象的调用了,集中的交给spring去进行管理了。使用IOC可以降低耦合度。
原理:就是xml解析,工厂模式,反射机制。
IOC操作的bean管理
bean管理主要就是指两个操作 1.spring创建对象 2.spring注入属性。
bean的管理操作用两种方式, 1.xml 2,注解 由于结合后期的学习springboot,使用注解的方式较多,xml的方式虽然逻辑清晰,但是需要写大量的代码,建交委繁琐,所以主要讲注解方式。
IOC 操作 Bean 管理(基于注解方式)
1、什么是注解 (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值…) (2)使用注解,注解作用在类上面,方法上面,属性上面 (3)使用注解目的:简化 xml 配置 2、Spring 针对 Bean 管理中创建对象提供注解 (1)@Component (2)@Service (3)@Controller (4)@Repository
- 上面四个注解功能是一样的,都可以用来创建 bean 实例
component一般处理的是普通层的操作。 service一般处理的是业务层的操作。 controller一般处理的是web层的操作。 repository一般处理的是dao层的操作。
3、基于注解方式实现对象创建
第一步 引入依赖 第二步 开启组件扫描
<context:component-scan base-package=“com.th”></context:component-scan>
第三步 创建类,在类上面添加创建对象注解 //在注解里面 value 属性值可以省略不写, //默认值是类名称,首字母小写 //UserService – userService @Component(value = “userService”) // public class UserService { public void add() { System.out.println(“service add…”); } }
4、开启组件扫描细节配置
<context:component-scan base-package=“com.atguigu” use-defaultfilters=“false”> <context:include-filter type=“annotation”
expression=“org.springframework.stereotype.Controller”/> </context:component-scan>
5、基于注解方式实现属性注入 (1)@Autowired:根据属性类型进行自动装配 第一步 把 service 和 dao 对象创建,在 service 和 dao 类添加创建对象注解 第二步 在 service 注入 dao 对象,在 service 类添加 dao 类型属性,在属性上面使用注解 @Service public class UserService { //定义 dao 类型属性 //不需要添加 set 方法 //添加注入属性注解 @Autowired private UserDao userDao; public void add() { System.out.println(“service add…”); userDao.add(); } }
6、完全注解开发 (j就是放弃前面的所有xml操作,直接使用下面的这些注解就可以) (1)创建配置类,替代 xml 配置文件 @Configuration //作为配置类,替代 xml 配置文件 @ComponentScan(basePackages = {“com.th”}) public class SpringConfig { }
7.编写测试类 @Test public void testService2() { //加载配置类 ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class); UserService userService = context.getBean(“userService”, UserService.class); System.out.println(userService); userService.add(); }
总结
个人学习的简单版的spring的aop操作如上所示,使用几个注解,就可以省去不断的new操作,和属性的注入问题,还使用了工厂类,降低了类和类之间的耦合度。还有反射机制。 后面的aop操作,等下次更新吧,如果有错误的地方还希望大家能够多多指教。
|