spring 后续会更新

学shiro学个开头来学spring  起码先把一些配置学懂了才能回去学shiro

IOC与AOP

AOP的核心:源代码的无关性          加入的逻辑代码和业务代码是无关的两部分代码   降低耦合度

如注解 @Before @After @Around都能体现AOP

IOC  所谓控制反转  是获得依赖对象的过程被反转了  不用new了  只负责使用  不创建对象  在配置文件中注入   所以也叫DI  依赖注入   把对象之间的依赖关系组织起来  

下边是慕课截得ppt

也可以说是面向接口编程

我照着慕课做了个java工程

spring所需jar包下载地址

https://download.csdn.net/download/qq_35653822/10929880

估计也就培训班老师会让我们把一堆jar粘到lib下了  上班了都用maven了

spring注入

两种方式   构造注入和设置注入

两种方式在xml中的名称和在对应类中的环境变量名称要一直

构造注入在xml中用<constructor-arg/>   在对应类中有构造方法给成员变量赋值

设置注入在xml中用<property/>  在对应类中有set方法给成员变量赋值

二者只能选其一

scope

scope="singleton"  默认的

scope="prototype" 每次请求都会创建新的实例

想看是不是同样实例的一个方法  可以打印 this.hashcode 比较

初始化和销毁

初始化 在<bean/>中配置 init-method 或者在<beans/>中配置 default-init-method bean在初始化时会执行对应的方法 如果两个都存在  <bean/>中init-method会覆盖beans中default-init-method 如init-method="init" 初始化时 就会执行对应bean中的init方法 如果不存在会报错

销毁  同上 <bean/>中配置destroy-method  <beans/>中配置default-destroy-method

Aware结尾的接口 可以对相应资源进行操作   

aware英文是感知的意思

比如实现BeanNameAware可以获得xml中配置对应bean的属性  如下链接

https://www.jianshu.com/p/c5c61c31080b

实现ApplicationContextAware可以调用application.getbean方法获得容器中的值

自动装配

1.no:默认不自动装配  而是通过设置注入或构造注入

2.byname 在<beans/>中 default-autowire="byname"或在<bean/>中autowire="byname"  注意<bean/>中id 声明set方法和属性

public class AutoWiringService {
	
	private AutoWiringDAO autoWiringDAO;
	
	public void setAutoWiringDAO(AutoWiringDAO autoWiringDAOb) {
		System.out.println("setAutoWiringDAO");
		this.autoWiringDAO = autoWiringDAOb;
	}
	
	public void say(String word) {
		this.autoWiringDAO.say(word);
	}

}

 3.bytype 同byname在<beans/>中 default-autowire="bytype "或在<bean/>中autowire="bytype " 注意<bean/>中id 声明set方法和属性

4.constructor:构造注入 在<beans/>中 default-autowire="constructor"或在<bean/>中autowire="constructor"   这个<bean>可以没有id  在调用类中通过构造方法注入

<?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" 
        default-autowire="constructor">
        
        <bean id="autoWiringService" class="com.imooc.autowiring.AutoWiringService" autowire="constructor"></bean>
        
        <bean id = "autoWiringDAO" class="com.imooc.autowiring.AutoWiringDAO" ></bean>
	
 </beans>
public class AutoWiringService {
	
	private AutoWiringDAO autoWiringDAO;
	
	public AutoWiringService(AutoWiringDAO autoWiringDAO) {
		System.out.println("AutoWiringService");
		this.autoWiringDAO = autoWiringDAO;
	}

	public void say(String word) {
		this.autoWiringDAO.say(word);
	}

}

@Component通用注解 可用于任何bean  @Repository @Service @Controller @Configuration都用@Component注解过

@Autowired自动装配  不用再xml里配置<constructor-arg> 或 <property>了 也不用在类中写set方法或者构造器赋值 

@Bean作用于方法 标示创建一个bean

注解可以代替xml配置 比如 @PostConstruct 可以代替 init-method  @PreDestroy 代替 destroy-method

@After方法相当于finally方法  最后方法抛异常也会执行

@Pointcut 可以用 &&  ||  !组合

发布了50 篇原创文章 · 获赞 2 · 访问量 9438

猜你喜欢

转载自blog.csdn.net/qq_35653822/article/details/86571809