解决SpringBoot常见问题

开发相关:

*使用@Autowired无法注入bean类

Consider defining a bean of type ‘xxx’ in your configuration.

1.@ComponentScan配合@Component、@Configuration、@Entity、@Repository、@Service等注解

@ComponentScan

@ComponentScan注解的basePackages属性可指定扫描的包路径(com.xxx),basePackages属性默认从被@ComponentScan所注解类的包路径开始向下扫描,因此SpringBoot的启动类最好位于源码根目录(com.xxx)。

@Component

组件类注解(通用),被@Repository和@Service包含。

@Configuration

配置类注解,作用相当于Spring在xml文件中定义bean。

@Entity

实体类注解,@Table(name=“表名”)作用于类上,@Id为主键字段,@Column为普通字段。

@Repository

DAO层注解,注入后bean的名称为类名的首字母小写,@Repository的value属性可指定bean的名称。

@Service

Service层注解,注入后bean的名称为类名的首字母小写,@Service的value属性可指定bean的名称。

2.使用@Import(xxx.class)注解在类名?

3.利用BeanDefinitionBuilder创建bean并注册到Spring容器

Tomcat不执行SpringApplication.run语句之后的所有代码,实现ApplicationListener接口的onApplicationEvent的方法可截获ApplicationContext ,在Tomcat完全启动SpringBoot项目前注入bean。

@Component
public class TomcatListener implements ApplicationListener<ContextRefreshedEvent> {
	@Override
	public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
		ApplicationContext applicationContext = contextRefreshedEvent.getApplicationContext();
		DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) applicationContext.getAutowireCapableBeanFactory();
		BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(xxx.class);
		defaultListableBeanFactory.registerBeanDefinition("xxx", beanDefinitionBuilder.getRawBeanDefinition());
		Assert.notNull(applicationContext.getBean("xxx"));
	}
}

编译相关:

*Error assembling WAR:webxml is required

指定maven-war-plugin版本3.1.0以上即可。

<?xml version="1.0" encoding="UTF-8"?>
	<packaging>war</packaging>
	。。。
	<build>
        <plugins>
            <plugin>
            	<groupId>org.apache.maven.plugins</groupId>
            	<artifaceId>maven-war-plugin</artifaceId>
            	<version>3.1.0</version>
            </plugin>
        </plugins>
    </build>   

部署相关:

*部署到Tomcat不运行(无日志)

在IDE运行SpringBoot项目时使用的是SpringBoot集成的tomcat,部署到Tomcat服务器时SpringBoot的启动类需继承SpringBootServletInitializer并重写configure方法。

@SpringBootApplication
public class AppMain extends SpringBootServletInitializer {
    public static void main(String[] args) {
    	SpringApplication.run(AppMain.class, args);
    }
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(AppMain.class);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: SpringBoot常见问题包括项目无法启动和启动类位置错误。如果使用的是SpringBoot 2.0.0.M3版本和SpringCloud Finchley.M2版本,按照视频可以正常启动。如果是高版本无法启动,需要在pom.xml中添加依赖org.springframework.boot:spring-boot-starter-web。\[1\] SpringBoot是Spring提供的一个快速开发工具,可以更方便、更快速地开发Spring+SpringMVC应用,简化了配置,整合了一系列解决方案,包括redis、mongodb、es等,可以开箱即用。\[2\] SpringBoot启动Tomcat是通过启动类来实现的,需要将启动类放在最上层,即包含所有子包。Spring Boot会自动加载启动类所在包下及其子包下的所有组件。\[3\] #### 引用[.reference_title] - *1* [Spring Boot 错误总结(累计30个常见错误)](https://blog.csdn.net/qq_32447301/article/details/77161272?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168932794216800192238621%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168932794216800192238621&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-77161272-null-null.article_score_rank&utm_term=springboot%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)[target="_blank"] [.reference_item] - *2* [SpringBoot中几个常见的几个问题](https://blog.csdn.net/sxl123sxl/article/details/125901983?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168932794216800192238621%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168932794216800192238621&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-4-125901983-null-null.article_score_rank&utm_term=springboot%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)[target="_blank"] [.reference_item] - *3* [SpringBoot常见问题汇总](https://blog.csdn.net/u014622092/article/details/129660024?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168932794216800192238621%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168932794216800192238621&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-129660024-null-null.article_score_rank&utm_term=springboot%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)[target="_blank"] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值