Как инициализировать Java-бин с аннотацией в рамках весны? - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть компонент Java:

public class User{

    private Integer userid;

    private String username;

    private String password;

    private boolean enable;

    //getter and setter

}   

Я могу инициализировать его как пружинный компонент в context.xml через:

 <context:component-scan base-package="com.myCompany.myProject" />

НоЯ не хочу инициализировать его в XML.Как я могу инициализировать его с аннотацией sring 3.Я попытался со следующим:

@Component 
public class User{

    private Integer userid;

    private String username;

    private String password;

    private boolean enable;

    //getter and setter

}  

Но вышеупомянутое не сработало для меня.Есть идеи?

Ответы [ 5 ]

0 голосов
/ 09 июля 2019

Я настроил свой XML-файл таким образом, это поможет вам решить проблему.Для Context-компоненты можно использовать

<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"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
 <context:component-scan base-package="com.java.Controllers"></context:component-scan>
 <context:component-scan base-package="com.java.dao"></context:component-scan>
 <context:component-scan base-package="com.java.bean"></context:component-scan>

Или же вы можете использовать

<context:component-scan base-package="com.java.*"></context:component-scan>

next для использования на основе аннотаций

<mvc:annotation-driven />

Для ресурсовиспользуйте это

<mvc:resources location="/" mapping="/**"/>
0 голосов
/ 19 сентября 2011
  1. Убедитесь, что класс «Пользователь» является пакетом или подпакетом «com.myCompany.myProject».

  2. Вам НЕ нужночтобы включить <context: annotation-config/>, он включен в компонентное сканирование.

  3. По умолчанию компонент доступен с именем "user", если вы не укажете имя компонента с помощью @Component ("myBeanName ")

Как только это будет сделано, вы можете автоматически подключить компонент к другому с помощью:

@Autowired
User user;

ИЛИ

@Inject
User user;

ПРИМЕЧАНИЯ:
@Inject - это аннотация javax.inject, в которой впрыск НЕ требуется.
@Autowired - это аннотация Spring, и впрыск требуется.
@Autowired можно использовать одним из следующих способов:

  1. чуть выше переменной-члена
  2. конструктор, который принимает пользовательский компонент
  3. , который принимает пользовательский компонент.
0 голосов
/ 19 сентября 2011

Вам нужно добавить

<context:annotation-config />

С этим XML мой Autowiring работает безупречно:

<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<context:annotation-config />
<context:component-scan base-package="com.vanilla.example"></context:component-scan>
</beans>
0 голосов
/ 19 сентября 2011

вам не нужно объявлять оба.

Использование контекста: annotation-config позволяет автоматически связывать компоненты с помощью аннотаций и т. Д.

Использование контекста: компонент-сканирование предоставляет все, что имеет контекст: annotation-config, но допускает автообнаружение bean-компонентов. Пакет, который вы предоставляете в контексте: component-scan будет сканировать этот пакет, а также все подпакеты.

Надеюсь, это поможет

0 голосов
/ 19 сентября 2011

Я полагаю, это потому, что вы включили сканирование компонентов на пакете com.myCompany.myProject, а не на пакете com.myCompany.myProject.db

Измените определение сканирования на следующее: <context:component-scan base-package="com.myCompany.myProject.db" /> (или добавьте новое,если вам нужны классы и из другого пакета), и вы можете удалить определение bean-компонента из XML, чтобы ваша аннотация работала для вас.

Глупо, но все же убедитесь, что аннотация @Component соответствует Spring.,Иногда я сталкивался с этой глупой проблемой определения аннотации, которая на самом деле не из нужной библиотеки (из-за одного и того же имени аннотации различными библиотеками в моем пути к классам).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...