bean经常需要被实例化,最常见的就是new一个呗,Bean bean = new Bean(),方便好用还快捷。

然而在我们刚开始学习写i项目的时候却发现,new不好用哦,并且也不报错,根本不知道怎么找原因

比如

package com.example;

import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.example.bean.Book;
import com.example.demo.test.TestConfiguration; @SpringBootApplication
public class Application{ public static void main(String[] args) { SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
//修改Banner的模式为OFF,启动时控制台将不打印显示字符wow
builder.bannerMode(Banner.Mode.OFF).run(args); Book bookconfig = new Book();
System.out.println( "emmmm..... The BookName is "
+bookconfig.getName()
+";and Book Author is "
+bookconfig.getAuthor()
+";and Book price is "
+bookconfig.getPrice()); //SpringApplication.run(Application.class, args);//默认启动方式
} }

控制台打印的却是

打印出来是null,可见实例化了一个bookconfig,却并没有从属性文件中读到属性值。

按照spring boot简化配置的思路以及spring的尿性,启动注解大法吧!

首先在Book类上@Scope("singleton"),表明这是一个单例类,容器中只有一个该类的实例,然后准备一个配置类

package com.example.demo.test;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//配置类,用来取代spring.xml那一堆<beans></beans>头文件
@Configuration
@ComponentScan(value="com.example")
public class TestConfiguration {
public TestConfiguration() {
System.out.println("Configuration容器启动初始化。。。");
}
}

这个配置类的作用注释中也都写了,就是我们常见的spring.xml里面的那一堆头文件 <beans></beans>节点间的内容。

嗯,意思就是写了这个清爽的配置类就不用在spring.xml里面配置各种bean了。@Configuration  @ComponentScan(value="com.example")这两个注解的作用就要自己看了。推荐

https://blog.csdn.net/u012702547/article/details/53633872

然而真的不需要spring.xml了吗?naive!少不了的不要想了。

怎么使用这个配置类呢?

package com.example;

import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.example.bean.Book;
import com.example.demo.test.TestConfiguration; @SpringBootApplication
public class Application{ public static void main(String[] args) { SpringApplicationBuilder builder = new SpringApplicationBuilder(Application.class);
//修改Banner的模式为OFF,启动时控制台将不打印显示字符wow
builder.bannerMode(Banner.Mode.OFF).run(args);
@SuppressWarnings("resource")
ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class); Book bookconfig = context.getBean(Book.class);
Book bookconfig2 = context.getBean(Book.class); System.out.println( "测试@Scope注解的类的设计模式"+bookconfig.equals(bookconfig2));
System.out.println( "emmmm..... The BookName is "
+bookconfig.getName()
+";and Book Author is "
+bookconfig.getAuthor()
+";and Book price is "
+bookconfig.getPrice()); //SpringApplication.run(Application.class, args);//默认启动方式
} }

哈哈哈哈,是的,如你所见,new一下这个配置类就好了。

然后直接把需要的类拿来用。

嗯,这样看起来是不需要每次手动去new一个,然而,并没有节约代码量啊衰。。。。。

ABCD四篇合集项目地址:https://github.com/tuliptulpen/studyspringboot

												

(D)spring boot使用注解类代替xml配置实例化bean的更多相关文章

  1. Spring Boot中普通类获取Spring容器中的Bean

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,自己动手n ...

  2. Spring Boot@Component注解下的类无法@Autowired的问题

    title: Spring Boot@Component注解下的类无法@Autowired的问题 date: 2019-06-26 08:30:03 categories: Spring Boot t ...

  3. Spring Boot常用注解总结

    Spring Boot常用注解总结 @RestController和@RequestMapping注解 @RestController注解,它继承自@Controller注解.4.0之前的版本,Spr ...

  4. spring boot常用注解使用小结

    1.@RestController和@RequestMapping注解 4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解. 4.0之前的版本,Sprin ...

  5. Spring Boot 常用注解汇总

    一.启动注解 @SpringBootApplication @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documen ...

  6. 3个Spring Boot核心注解,你知道几个?

    Spring Boot 核心注解讲解 Spring Boot 最大的特点是无需 XML 配置文件,能自动扫描包路径装载并注入对象,并能做到根据 classpath 下的 jar 包自动配置. 所以 S ...

  7. spring boot 常用注解

    @RestController和@RequestMapping注解 4.0重要的一个新的改进是@RestController注解,它继承自@Controller注解.4.0之前的版本,spring M ...

  8. spring mvc 和spring boot 中注解的使用

    1 spring mvc和spring boot之间的关系 spring boot包含spring mvc.所以,spring mvc的注解在spring boot总都是可以用的吗? spring b ...

  9. 【SpringBoot】15. Spring Boot核心注解

    Spring Boot核心注解 1 @SpringBootApplication 代表是Spring Boot启动的类 2 @SpringBootConfiguration 通过bean对象来获取配置 ...

随机推荐

  1. 谁动了我的I/O?

    首先,是信用卡账单欠款0.13美刀~~~然后上亚马逊云查了一下账单. 3M次I/O...(1215133次超额的,2000000次免费的.) 于是监控了一下数据:每秒至少写5次,每秒写300KB,平均 ...

  2. Windows计算下载文件的SHA256 MD5 SHA1

    引用自 http://blog.163.com/licanli2082@126/blog/static/35748686201284611330/ certutil -hashfile yourfil ...

  3. May 1 2017 Week 18 Monday

    The very essence of romance is uncertainty. 浪漫的精髓就在于它充满了种种可能. Yesterday my girl friend told me that ...

  4. QT5中两个窗体之间传递信息(值)

    一个窗体A调用另一个窗体B: 1)包含窗体B的头文件#include"B.h" 2)在窗体A中增加slots函数: public slots: void infoRecv(QStr ...

  5. 后缀数组入门(二)——Height数组与LCP

    前言 看这篇博客前,先去了解一下后缀数组的基本操作吧:后缀数组入门(一)--后缀排序. 这篇博客的内容,主要建立于后缀排序的基础之上,进一步研究一个\(Height\)数组以及如何求\(LCP\). ...

  6. P1151 子数整数

    题目描述 对于一个五位数a_1a_2a_3a_4a_5a1​a2​a3​a4​a5​,可将其拆分为三个子数: sub_1=a_1a_2a_3sub1​=a1​a2​a3​ sub_2=a_2a_3a_ ...

  7. 20145238-荆玉茗 《Java程序设计》第9周学习总结

    20145238第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 ...

  8. python中的for循环如何控制步长

    for i in range(开始/左边界, 结束/右边界, 步长): print i 例如 for i in range(1, 10, 2): print i 等价于 for (i=1;i<= ...

  9. 推荐优秀的开源GIS软件

    推荐优秀的开源GIS软件(以后会补充) 从GIS入门到现在,我已经接触不少优秀的GIS软件,这里列出我使用过优秀的开源GIS软件. 桌面GIS软件: Qgis(基于Qt使用C++开发的跨平台桌面软件, ...

  10. C编程经验总结5(剧终)

    Prolog是AI编程语言 Git(分布式)  svn(集中式)   commit(委托,犯罪) patch补丁)  merge(融入) repository(仓库) Ctrl+s(保存)     r ...