根据编程不良人视频整理
标准开发方式
如果dayApplication.java没有放在包下,而是直接放在java文件夹下,那么,dayApplication.java中的@EnableAutoConfiguration @ComponentScan这两个注解会将项目中的jar包中的每一个类都进行扫描,从而进行自动配置,这样会对springboot程序造成非常大的效率影响。
官方文档建议Application.java放在所有的子包之外,比如放在controller、service(业务包)、dao、customer等包之外。但不代表可以放在默认包java文件夹。
注解@SpringBootApplication整合了@EnableAutoConfiguration @ComponentScan
application.yml
server:
port: 8989
servlet:
context-path: /springboot_day
application.properties
server.port=8989
server.servlet.context-path=/springboot_day
在springboot中提供了两种方式去配置class,即通过springboot去管理自定义java class。
springboot中给我们提供了两种方式
1.java config
java配置(通过java 配置的方式进行自定义java对象的管理)(官方更推荐这种)
两种方式:
A.@Configuration注解:类似于@Component注解。特点:可以针对于多个自定义对象进行管理
B.@import注解:将直接导入一个配置类。所谓直接导入一个配置类指的是:加入一开始User类没有交给工厂管理,即没写@Configuration注解,这样的话在HelloController.java中注入此对象一定会报错,因为@Autowired要求工厂中必须存在。此时可以在HelloController.java中添加@Import(User.class)注解,可直接通过这个注解导入当前的类,导入之后就可以用了。 特点:导入指定对象,@import一次性在哪用的时候,只用一次,用这个比较好。
(推荐使用@Configuration)
所谓java配置就是纯通过java代码基于注解的方式进行配置
在com.estella包中新建包entity->新建java类User.java
自动生成构造方法:右键->Generate->构造方法等
除了构造所有变量的构造方法,也要构造无参的构造方法selectnone
自动生成getset方法
自动生成toString方法
代码如下:
public class User {
private String id;
private String name;
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User() {
}
public User(String id, String name) {
this.id = id;
this.name = name;
}
}
如果日后想要将这个对象交给工厂管理,添加注解@Configuration
注解@Configuration继承了注解@Component,它也是做组件对象创建
所以在对象上添加@Configuration
通过@Configuration注解将对象创建后,可以在HelloController.java中对对象进行注入,并加上注解@Autowired
此时查看是否能对这个对象进行一个管理
在管理多个对象时,新建一个configs包->新建BeansConfig.java,在这个类上添加注释@Configuration,定义一个返回值是User类型的方法,然后在这里写当前方法的实例。在此方法上添加注释@Bean
@Configuration
public class BeansConfig {
@Bean
public User getUser(){
return new User();
}
}
@Bean注释:将当前返回值作为工厂中一个对象进行管理。这种方式最大的好处:日后类中不仅可以管理User,也可以管理其他类,可以把日后想要管理的对象都放在这里。
2.xml方式配置
通过xml配置去管理java对象
如果User对象想基于xml的方式来管理,不想基于Bean的方式来管理,该如何做?
先将configs包删除,User类上也无@Configuration注解,此时工厂中没有user对象,运行程序,则报错。(如果只删除config包,但User类上有@Configuration注解,则程序不会报错,运行成功)
此时,可以通过xml的方式进行配置。
main->resources->新建XML Configuration File->spring
Config->命名为spring.xml
通过bean标签的方式,命名为user,class为User
<!--交给工厂管理-->
<bean id="user" class="com.estella.entity.User"></bean>
如何将配置告诉Springboot?
可以在入口类dayApplication.java中添加注解@ImportResource(“spring.xml”)
此时启动程序,运行成功。
需要注意:不推荐使用xml方式