最近在学习spring mvc,一直不喜欢用xml配置的方式,通过查找资料,知道了通过注解来用java代码配置的方式。尝试了下,像如下的xml配置:
<!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->
<context:component-scan base-package="net.comet.noxmlconfigspring.controller",
"net.comet.noxmlconfigspring.service",
"net.comet.noxmlconfigspring.component" />
<!-- 身份认证拦截器 -->
<mvc:interceptors>
<bean class="net.comet.noxmlconfigspring.component.AuthorizationInterceptor" />
</mvc:interceptors>
可以用如下的java代码和注解来配置:
@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan(basePackages = {
"net.comet.noxmlconfigspring.controller",
"net.comet.noxmlconfigspring.service",
"net.comet.noxmlconfigspring.component"
})
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Autowired
private AuthorizationInterceptor authorizationInterceptor;
@Autowired
private CurrentUserMethodArgumentResolver currentUserMethodArgumentResolver;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authorizationInterceptor);
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(currentUserMethodArgumentResolver);
}
}
但是对于如下的xml配置:
<!-- 定义实体的工厂bean -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="defaultPersistenceUnit" />
</bean>
<!-- 定义事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- 定义JPA Repository的存放目录 -->
<!-- 定义实体工厂的引用 -->
<!-- 定义事务管理器的引用 -->
<jpa:repositories base-package="net.comet.noxmlconfigspring.repository"
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager" />
我找了很多资料也没有发现怎样通过注解和java代码的方式的来配置,故此请教大家,谢谢!
假设你需要配置一个 id 为 entityManagerFactory,类型是 org.springframework.orm.jpa.LocalEntityManagerFactoryBean 的 Bean。同时 persistenceUnitName 属性的值是 defaultPersistenceUnit