Autowire

【转】SpringMVC、Spring的Bean

强颜欢笑 提交于 2019-12-05 15:22:22
一、简述Spring Spring是一个轻量级的Java 开发框架。他使用基本的JavaBean来完成以前只可能由EJB【Enterprise JavaBean】完成的事情。 简单来说,Spring是一个轻量级的 控制反转(IoC) 和 面向切面(AOP) 的容器框架。 有关 IoC 可以参考: http://blog.csdn.net/it_man/article/details/4402245 有关 AOP 可以参考: http://blog.csdn.net/it_man/article/details/50232373 二、简述SpringMVC 如果说Spring是一个工具箱,那SpringMVC就是其中的一个扳手。Spring MVC是Spring提供的一个强大而灵活的web框架。借助于多样的注解,Spring MVC提供了几乎是POJO【Plain Ordinary Java Object,普通JavaBeans】的开发模式,使得控制器的开发和测试更加简单。 SpringMVC利用 反射机制原理 出现的注解就是为了解决配置大量的配置文件问题 【 反射机制: 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制】

Mybatis-Spring源码分析

一曲冷凌霜 提交于 2019-12-05 02:21:55
分析Mybatis如何利用Spring的扩展点集成到框架中的,Mybatis本身的扩展点不再本次分析范畴 构建环境 上Github上下载 https://github.com/mybatis/spring 。通过Git的方式试了几次没成功,后来直接Down的zip包,再导入的Idea中的。 导入的过程当中会有点慢,要下载不少东西。记得一定要修改Maven的配置文件和本地仓库地址,否则可能之前你已经下过的相关包会又下载到C盘的本地仓库当中 测试代码 直接在源码目录下新建了一个目录来写测试代码 测试类 @Configuration @MapperScan("com.jv.mapper") @ComponentScan("com.jv.scan") public class TestMybatis { public static void main(String[] args) { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestMybatis.class); UserService bean = ac.getBean(UserService.class); System.out.println(bean.query()); } @Bean public

崛起于Springboot2.X + Mybatis:xml方式(3)

家住魔仙堡 提交于 2019-12-04 20:13:00
《SpringBoot2.X心法总纲》 mybatis编写方式:通过mapper.xml方式编写sql操作mysql数据库。 1、创建Springboot2.0 项目 1.1 new Project 1.2 创建springboot 1.3 Maven构建项目 1.4 选择2.0 以上的版本,勾选Web 1.5 在SQL上勾选Mysql 和Mybatis 1.6 Next,选择项目位置目录 1.7 创建项目目录结构图 2、配置集成mysql 2.1 application.properties配置属性 #mysql: spring.datasource.url=jdbc:mysql://127.0.0.1:3306/ds spring.datasource.username=root spring.datasource.password=xiaonengweiwu spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.max-idle=10 spring.datasource.max-wait=10000 spring.datasource.min-idle=5 spring.datasource.initial-size=5 application.properties如下所示:

Spring 常见注解记录和比较

我们两清 提交于 2019-12-03 21:29:06
Spring 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository、 @Service 和 @Controller。 在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。 从源码可以看出来没有任何区别(起码目前的版本是这样) @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Controller { /** * The value may indicate a suggestion for a logical component name, * to be turned into a Spring bean in case of an autodetected component. * @return the suggested component name, if any */ String value() default ""; } @Target(ElementType.TYPE) @Retention(RetentionPolicy

@Autowired 与@Resource的区别(详细)

橙三吉。 提交于 2019-12-03 21:28:55
#@Autowired 与@Resource的区别 spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。 @Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。 @Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。 @Resource装配顺序 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配

redis结合springboot 无法注入redisTemplate问题

独自空忆成欢 提交于 2019-12-01 17:10:29
redis结合springboot 无法注入redisTemplate问题 报错: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.data.redis.core.RedisTemplate<java.io.Serializable, java.io.Serializable>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} 之前是, @Autowired private RedisTemplate<String, Object> redisTemplate; 改成 @Resource private RedisTemplate<String, Object> redisTemplate; 来源: oschina 链接: https://my.oschina.net/u/3632227

Springboot 的 @ComponentScan

纵饮孤独 提交于 2019-11-30 11:09:04
spring就是一个依赖注入框架,所有的内容都是关于bean的定义及其依赖关系 定义Spring Beans的第一步是使用正确的注解@Component或@Service或 @Repository 但是,Spring不知道你定义了某个bean除非它知道从哪里可以找到这个bean ComponentScan做的事情就是告诉Spring从哪里找到bean 由你来定义哪些包需要被扫描。一旦你指定了,Spring将会将在被指定的包及其下级包(sub packages)中寻找bean -- 扫描一个包 定义@CoponentScan(“com.demo”) 这么做扫描的范围扩大到整个父包com.demo -- 扫描两个包 定义分别扫描两个包 @ComponentScan({“com.demo.springboot”,”com.demo.somethingelse”}) 有的时候你回遇到这样的错误 WARNING: No mapping found for HTTP request with URI [/spring-mvc/login] in DispatcherServlet with name ‘dispatcher’ WARNING: No mapping found for HTTP request with URI [/list-todos] in

【Spring】- 属性注入方式

亡梦爱人 提交于 2019-11-29 05:19:38
House类 :只有一个People属性,验证引用的ref引用bean的set方法注入方式 package com.zhiwei.autowire; public class House { private People people; public People getPeople() { return people; } public void setPeople(People people){ this.people=people; }[@Override](https://my.oschina.net/u/1162528) public String toString() { return "House [people=" + people + "]"; } } People类:存在一个name和Dog属性,主要时验证普通的set方法的值注入 package com.zhiwei.autowire; /** * People类:属性:name,dog */ public class People { private String name; private Dog dog; public String getName() { return name; } public void setName(String name) { System.out.println(

Mybatis-Spring源码分析

好久不见. 提交于 2019-11-25 22:51:37
分析Mybatis如何利用Spring的扩展点集成到框架中的,Mybatis本身的扩展点不再本次分析范畴 构建环境 上Github上下载 https://github.com/mybatis/spring 。通过Git的方式试了几次没成功,后来直接Down的zip包,再导入的Idea中的。 导入的过程当中会有点慢,要下载不少东西。记得一定要修改Maven的配置文件和本地仓库地址,否则可能之前你已经下过的相关包会又下载到C盘的本地仓库当中 测试代码 直接在源码目录下新建了一个目录来写测试代码 测试类 @Configuration @MapperScan("com.jv.mapper") @ComponentScan("com.jv.scan") public class TestMybatis { public static void main(String[] args) { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestMybatis.class); UserService bean = ac.getBean(UserService.class); System.out.println(bean.query()); } @Bean public