gpt4 book ai didi

java @Autowired 返回 null。无法让 spring 工作

转载 作者:行者123 更新时间:2023-12-01 18:32:51 30 4
gpt4 key购买 nike

我无法让 Spring 工作。有人可以帮助我吗?在此示例中,我有 2 个 Autowiring :CvDaoImpl 和 SessionFactory。两者都无法在上下文中识别并返回 null。

CvQuery.java

package service;

@Service
public class CvQuery {

@Autowired
private CvDao cvDao;

private String query;

@Transactional
public List<User> getUsers() {
return cvDao.getUsers(query);
}
...getters/setters
}

CvDaoImpl.java

package dao;

@Repository
public class CvDaoImpl implements CvDao {

@Autowired
private SessionFactory sessionFactory;

@Override
public List<User> getUsers(String query) {
Session currentSession = sessionFactory.getCurrentSession();
Query<User> theQuery = currentSession.createQuery(query, User.class);
return theQuery.getResultList();
}

public CvDaoImpl() {
}
}

这是配置。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>test</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
...
</dependencies>
</project>

spring_config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">

<context:component-scan base-package="configuration"/>
<context:component-scan base-package="entity"/>
<context:component-scan base-package="dao"/>
<context:component-scan base-package="service"/>
<context:annotation-config/>
</beans>

DataSourseConfig.class

package configuration;

@Configuration
@PropertySource("classpath:persistence-mysql.properties")
@EnableTransactionManagement
public class DataSourceConfig {

@Autowired
private Environment env;

@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
sessionFactory.setPackagesToScan("entity");
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
}

我使用的是intellij idea,所以如果配置正确,可能项目结构中的某些设置是错误的。 spring_config.xml 作为 spring 应用程序上下文附加在模块部分。

已添加:

    public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring_config.xml");
....
}

application context should be create here

更新我尝试使用来自简单 Java 类和 bean 的对象。不同的背景——这是一个问题。

最佳答案

您可能尚未启用注释扫描。

看看this作为您的应用程序入口点。

另一种方法是声明一个配置类并使用 @Bean 注释来显式创建您的 bean。

关于java @Autowired 返回 null。无法让 spring 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60128766/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com