Use anotações para construir contêineres do IOC
Use anotações para registrar feijões com recipientes de mola. Precisa se registrar no ApplicationContext.xml <Contexto: Componente-Scan-Package = ”PagKage1 [, Pagkage2,…, Pagkagen]”/>.
Por exemplo: especifique um pacote em pacote básico
<Contexto: componente-Scan Base-Package = "cn.gacl.java"/>
Indica que, se uma classe tiver uma anotação específica [@componente/@repositório/@service/@controlador] no pacote cn.gacl.java e sua subpackage, esse objeto será registrado no contêiner de mola como um feijão. Você também pode especificar vários pacotes em <Contexto: componente-Scan Base-Package = ""/>, como:
<Contexto: component-scan Base-Package = "cn.gacl.dao.impl, cn.gacl.service.impl, cn.gacl.action"/>
Vários pacotes são separados por vírgulas.
1. @Component
@Componente
É uma forma comum para todos os componentes gerenciados da primavera. A anotação @Component pode ser colocada na cabeça da classe e o @component não é recomendado.
2. @Controller
@Controller corresponde ao feijão da camada de apresentação, ou seja, ação, por exemplo:
@Controller @Scope ("Prototype") Public Class UserAction estende Baseaction <suser> {...}Depois de usar a anotação @Controller para identificar o UserAction, significa que o UserAction deve ser entregue ao contêiner de mola para gerenciamento. Haverá uma ação chamada "UserAction" no contêiner de mola. Este nome é obtido com base no nome da classe UserAction. Nota: Se o @Controller não especificar seu valor 【@Controller】, o nome do feijão padrão será minúsculo na primeira letra do nome da classe. Se você especificar o valor 【@Controller (value = "UserAction")】 ou 【@Controller ("UserAction")】, use o valor como o nome do feijão.
O UserAction aqui também usa a anotação @Scope. @Scope ("Prototype") significa que o escopo da ação é declarado como um protótipo. Você pode usar o Scope = "Prototype" do contêiner para garantir que cada solicitação tenha uma ação separada para lidar com isso, evitando os problemas de segurança de threads de ação em suportes. Mola o escopo padrão é o modo Singleton (Scope = "Singleton"), que só criará um objeto de ação. Cada acesso é o mesmo objeto de ação. Os dados não são seguros. O STRUTS2 requer que cada acesso corresponda a uma ação diferente. scope = "protótipo" pode garantir que um objeto de ação seja criado quando houver uma solicitação.
3. @ Serviço
@Service corresponde ao feijão da camada de serviço, por exemplo:
@Service ("UserService") classe pública UserServiceImpl implementa UserService {……}Anotação @Service ("UserService") diz a Spring que, quando a Spring deseja criar uma instância do UserServiceImpl, o nome do feijão deve ser chamado de "UserService". Dessa forma, quando a ação precisa usar uma instância do UserServiceImpl, o "UserService" criado pela primavera pode ser injetado em ação: em ação, você só precisa declarar uma variável chamada "UserService" para receber o "Usuários Service" injetado pela primavera. O código específico é o seguinte:
// injetar UserService @Resource (name = "UserService") UserService private Service Service;
Nota: O tipo de variável "UserService" declarada na ação deve ser "UserServiceImpl" ou sua classe pai "Usuários Service", caso contrário, ela não pode ser injetada devido a tipos inconsistentes. Porque a variável "UserService" declarada na ação usa a anotação @Resource e indica seu nome = "UserService", o que equivale a dizer à Spring que eu quero instanciar um "Usuários Service". A primavera me ajudará a instanciar rapidamente e depois me dará. Quando a Spring vê a anotação @Resource na variável UserService, de acordo com o atributo de nome especificado, você pode saber que uma instância do UserServiceImpl precisa ser usada na ação. No momento, a primavera injetará a instância do UserServiceImpl chamado "UserService" na variável "UserService" na ação para ajudar a ação a concluir a instanciação do Usuários Service; portanto, na ação não há necessidade de usar "Usuários Service Service = new UserServiceImpl ();" "" Esta é a maneira mais primitiva de instanciar o serviço de usuários.
Se não houver primavera, quando a ação precisar usar o UserServiceImpl, você deverá criar ativamente um objeto de instância por meio de "UserService UserService = new UserServiceImpl ();". No entanto, após o uso da primavera, quando a ação deseja usar o UserServiceImpl, você não precisa criar ativamente uma instância do UserServiceImpl. Criar uma instância do UserServiceImpl foi entregue à primavera. A primavera fornece à instância criada UserServiceImpl para a ação e você pode usá -la diretamente após a ação.
A ação pode ser usada imediatamente após a criação ativamente da instância do UserServiceImpl, mas espera -se passivamente a primavera para criar a instância do UserServiceImpl antes de injetá -la em ação.
Isso mostra que o "controle" da ação sobre a classe "UserServiceImpl" foi "revertido". Acontece que a iniciativa está em minhas próprias mãos. Eu tenho que usar a instância da classe "UserServiceImpl". Posso tomar a iniciativa de usá -la imediatamente. Mas agora não posso levar a iniciativa a novas instâncias da instância da classe "UserServiceImpl". O poder da nova instância da classe "UserServiceImpl" foi retirado pela primavera. Somente a primavera pode novas instâncias da instância da classe "UserServiceImpl", e a ação só pode esperar a mola para criar a classe "Usuáriose" após a instância da classe rviceImpl "," por favor ", dê a instância criada da classe" UserServiceImpl ", também que pode usar" Usuários "depende", depender ", depender", depender a injeção de "Usuários da primavera", também pode ser chamado "depende" depende ", depende", depende ", depender de que a injeção de que seja" depende ", depende", depender a injeção de "Usu.Senseation. UserServiceImpl para trabalhar, por isso cria uma dependência do UserServiceImpl.
4. @ Repositório
@Repository corresponde ao feijão da camada de acesso a dados, por exemplo:
@Repository (value = "userdao") classe pública userdaoimpl estende baseado em baseoimpl <suser> {………}A anotação @Repository (Value = "Userdao") diz ao Spring para deixar a Spring criar uma instância do userdaoImpl chamada "Userdao".
Quando o serviço precisa usar a instância do userdaoIMPL denominada "userdao" criada pela primavera, você pode usar a anotação @Resource (name = "userdao") para informar a primavera e a primavera pode injetar o userdao criado no serviço.
// injete userdao e, ao retirar o usuário especificado do banco de dados de acordo com o ID do usuário, você precisa usar @Resource (name = "userdao") privado baseado <suser> userdao;
@Resource, @Autowired e @qualifier são todos usados para injetar objetos. Entre eles, o @Resource pode ser injetado em nome ou tipo, o @Autowired só pode ser injetado em tipo, e o @qualifier só pode ser injetado em nome.
Mas eles têm algumas diferenças sutis:
1. @Resource e @qualifier são injetados automaticamente pelo ByName por padrão, e @Autowired é automaticamente injetado pelo ByType por padrão.
2. @Resource possui duas propriedades mais importantes, nome e tipo. Se o atributo de nome for usado, a política de injeção automática do ByName será usada. Ao usar o atributo de tipo, a política de injeção automática bytype é usada.
3. @Resources é uma anotação fornecida pelo JDK, enquanto @Autowired é uma anotação fornecida pela primavera.
Você pode tratar o @Resource como o chefe do @Autowired @qualifier, haha. Eu tenho o que você tem e eu tenho o que você não tem, e também tenho ~
@Resource, @Autowired e @qualifier são todos usados para injetar objetos. Entre eles, o @Resource pode ser injetado em nome ou tipo, o @Autowired só pode ser injetado em tipo, e o @qualifier só pode ser injetado em nome.
Mas eles têm algumas diferenças sutis:
1. @Resource e @qualifier são injetados automaticamente pelo ByName por padrão, e @Autowired é automaticamente injetado pelo ByType por padrão.
2. @Resource possui duas propriedades mais importantes, nome e tipo. Se o atributo de nome for usado, a política de injeção automática do ByName será usada. Ao usar o atributo de tipo, a política de injeção automática bytype é usada.
3. @Resources é uma anotação fornecida pelo JDK, enquanto @Autowired é uma anotação fornecida pela primavera.
Você pode tratar o @Resource como o chefe do @Autowired @qualifier, haha. Eu tenho o que você tem e eu tenho o que você não tem, e também tenho ~
As anotações da primavera acima do uso do método de usar anotações para construir contêineres do IOC é todo o conteúdo que compartilhei com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.