bean

Spring bean生命周期

我只是一个虾纸丫 提交于 2020-03-06 12:09:51
1.实例化bean AbstractAutowireCapableBeanFactory类中的 createBeanInstance(beanName, mbd, args); 2.为bean注入属性 AbstractAutowireCapableBeanFactory类中的 populateBean(beanName, mbd, instanceWrapper); 3.调用各种实现的Aware接口(BeanNameAware, BeanFactoryAware, ApplicationContextAware),调用相关的set方法 AbstractAutowireCapableBeanFactory 类中 invokeAwareMethods(beanName, bean); 4.调用BeanPostProcessor的postProcessBeforeInitialization方法 AbstractAutowireCapableBeanFactory 类中 applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName); 5.调用InitializingBean的afterPropertiesSet方法 AbstractAutowireCapableBeanFactory 类中

SpringMVC执行原理

冷暖自知 提交于 2020-03-06 10:20:20
SpringMVC执行原理 1. 前端控制器:DispatcherServlet 位于 /WEB-INF/web.xml <!--1.注册DispatcherServlet--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--关联一个springmvc的配置文件:【servlet-name】.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!--启动级别-1:和服务器同时启动--> <load-on-startup>1</load-on-startup> </servlet> <!-- 在SpringMVC中: --> <!-- / 匹配所有的请求,但不匹配.jps文件--> <!-- /* 匹配所有的请求,并且匹配.jsp文件--> <servlet-mapping> <servlet-name>springmvc</servlet

Spring Boot Bean和依赖注入

核能气质少年 提交于 2020-03-06 00:02:59
在Spring Boot中,可以使用Spring Framework来定义bean及其依赖注入。 @ComponentScan 注释用于查找 bean 以及使用 @Autowired 注释注入的相应内容。 如果遵循Spring Boot典型布局,则无需为 @ComponentScan 注释指定任何参数。 所有组件类文件都自动注册到Spring Beans。 以下示例提供了有关自动连接Rest Template对象并为其创建Bean代码片段 - @Bean public RestTemplate getRestTemplate() { return new RestTemplate(); } Java 以下代码显示主Spring Boot Application类文件中自动连接的Rest Template对象和Bean创建对象的代码 - package com.yiibai.demo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org

@Autowired与@Resource

試著忘記壹切 提交于 2020-03-05 22:39:40
  昨天在开代码评审的时候,对于一个同事说上面的代码不要使用@Resource写很多,只要使用@Autowired就可以一次性加进去,也没说不行。表示不是很清楚,不记得可以这么做,今天仔细研究了一下,针对上面的那种做法,其实是会报错的。下面是文章的总结。当然,在网上参考了一下文章。 一:相同点:   @Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。 二:不同点: 1.提供方   @Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;   @Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。 2.注入方式   @Autowired只按照byType 注入; public class UserService { @Autowired private UserDao userDao; }   如上代码所示,这样装配回去spring容器中找到类型为UserDao的类,然后将其注入进来。这样会产生一个问题,当一个类型有多个bean值的时候,会造成无法选择具体注入哪一个的情况,这个时候我们需要配合着@Qualifier使用。   

spring @Configuration bean 参数注入

假装没事ソ 提交于 2020-03-05 22:19:15
Spring @Value 设置默认值 Spring 3 supports ${my.server.port:defaultValue} syntax. @Value("${zookeeper.enable:false}") private boolean isZkEnable; 添加redis.properties文件 spring.redis.cluster.nodes=10.48.193.201:7389,10.48.193.201:7388 spring.redis.cluster.timeout=2000 spring.redis.cluster.max-redirects=8 编写初始化JedisConnectionFactory连接工厂的java类 @Configuration public class MonitorConfig { @Value("${spring.redis.cluster.nodes}") private String clusterNodes; @Value("${spring.redis.cluster.timeout}") private Long timeout; @Value("${spring.redis.cluster.max-redirects}") private int redirects; @Bean public

spring生命周期

蹲街弑〆低调 提交于 2020-03-05 20:59:46
[MyBeanFactoryPostProcessor] constructor ... MyBeanFactoryPostProcessor] postProcessBeanFactory ... [MyBeanPostProcessor] constructor ... [MyInstantiationAwareBeanPostProcessor] constructor ... 16:18:06.149 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating instance of bean 'myBean' **MyBean** construct. 16:18:06.154 [main] DEBUG org.springframework.context.annotation.CommonAnnotationBeanPostProcessor - Found init method on class [com.example.LifeCycle.MyBean]: public void com.example.LifeCycle.MyBean.springPostConstruct() 16:18:06.154 [main] DEBUG org

spring生命周期

落爺英雄遲暮 提交于 2020-03-05 20:59:27
Github地址 最近在整合mybatis-spring。 公司里面已经有一个叫做kylin-datasource的开发包,以前能够提供master和slave2个数据源,最近更新了2.0版本,支持自动扫描mapper了(之前每写一个mapper都要自己去配个factory)。 在毕业设计的项目里面,我也准备自己写一个mybatis与spring整合的依赖,并且希望在这个包原有的基础上,写的尽量完善一些。 同时也是为了能够更加深的去了解spring的原理。 自己建项目,将源代码类一个个拷过来,运行的时候,还是报错了:原先有3个datasouce,datasource\masterDatasource\slaveDatasource,所以在注入的时候找到了3个,spring不知道该怎么办了。 只好将所有slave相关的先删了,保证能够访问数据库先再说。 中间虽然也遇到了非常多的问题,但最终还是让一个master的依赖可用了。同时,我也对原先的代码一顿改,改成我看的习惯的样子。。 加载配置文件 这是今天遇到的主要问题: 使用@EnableConfigurationProperties 让properties中的属性自动注入到bean的属性中,这个bean叫做DatasourceProperties。 这种方法看上去非常优雅,,我也不想舍弃。

spring依赖注入实例

狂风中的少年 提交于 2020-03-05 20:41:00
依赖注入: BL public class T01BL implements Serializable { private static final Log logger = LogFactory.getLog(T01BL.class); private BaseDAO baseDao; private BankBL bankBL; private ICCardBL icCardBL; private BillingBL billingBL ; } 对应的配置文件: <!-- 煤气先锋IC卡用户信息查询BL --> <bean id="t01BL" class="cc.dfsoft.bank.bl.T01BL"> <property name="bankBL" ref="bankBL"></property> <property name="icCardBL" ref="icCardBL"></property> <property name="billingBL" ref="billingBL"></property> <property name="baseDao" ref="baseDAO"></property> </bean> 注意: 配置文件中,ref反射的值是其他配置处写的bean的id值 name值对应的是类中注入属性的变量,首字母必须小写

【Spring源码分析】非懒加载的单例Bean初始化过程(下篇)

牧云@^-^@ 提交于 2020-03-05 19:59:28
doCreateBean方法 上文 【Spring源码分析】非懒加载的单例Bean初始化过程(上篇) ,分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的。先贴一下AbstractAutowireCapableBeanFactory的doCreateBean方法代码: 1 protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[] args) { 2 // Instantiate the bean. 3 BeanWrapper instanceWrapper = null; 4 if (mbd.isSingleton()) { 5 instanceWrapper = this.factoryBeanInstanceCache.remove(beanName); 6 } 7 if (instanceWrapper == null) { 8 instanceWrapper = createBeanInstance(beanName, mbd, args); 9 } 10 final Object bean = (instanceWrapper != null ? instanceWrapper

Spring Boot 学习笔记(四)@PropertySource、@ImportResource、@Bean

大兔子大兔子 提交于 2020-03-05 19:31:22
1、@PropertySource @ConfigurationProperties 注解给Bean注入数据只能加载全局配置文件下的配置内容、若要单独指定另外的配置文件则需要用到@PropertySource 同时注意 @PropertySource 只支持 properties 文件上 2、@ImportResource 这个注解的作用是用来引入 spring 配置文件的,Boot中原本没有 spring 的配置文件,若要引入,则需要这个注解 详细见 => click here 3、@Bean 首先 springboot 并不推荐使用配置文件的方式来配置 Bean 对象,而是采用配置类的方式 来源: https://www.cnblogs.com/qwertiLH/p/12203068.html